104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GSM-PS (6147)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : CC_FFK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This Modul defines the functions called by the primitive
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | processing functions of the SDL process FORMATTER.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef CC_FFK_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define CC_FFK_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #define ENTITY_CC
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "typedefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "pcm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "custom.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "gsm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "message.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "ccdapi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "prim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "cnf_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "mon_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "pei.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "tok.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 /*==== PRIVAT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 | STATE : code ROUTINE : for_check_called_party_bcd |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 PURPOSE : Checks the content of a called party bcd information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 GLOBAL BOOL for_check_called_party_bcd (UBYTE ton, UBYTE npi)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 TRACE_FUNCTION ("for_check_called_party_bcd()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 * Check numbering type
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 if (ton <= M_CC_TON_DEDICATED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 * Check numbering plan
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 switch (npi)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 case M_CC_NPI_UNKNOWN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 case M_CC_NPI_ISDN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 case M_CC_NPI_X121:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 case M_CC_NPI_F69:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 case M_CC_NPI_NATIONAL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 case M_CC_NPI_PRIVATE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 | STATE : code ROUTINE : for_check_called_party_sub |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 PURPOSE : Checks the content of a called party sub information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 GLOBAL BOOL for_check_called_party_sub (T_M_CC_called_subaddr * called_subaddr)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 TRACE_FUNCTION ("for_check_called_party_sub()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 switch (called_subaddr->tos)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 case M_CC_TOS_NSAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 case M_CC_TOS_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 | STATE : code ROUTINE : for_check_calling_party_bcd|
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 PURPOSE : Checks the content of a calling party bcd information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 GLOBAL BOOL for_check_calling_party_bcd (T_M_CC_calling_num * calling_num)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 TRACE_FUNCTION ("for_check_calling_party_bcd()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 * Check numbering type
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 if (calling_num->ton <= M_CC_TON_DEDICATED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 * Check numbering plan
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 switch (calling_num->npi)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 case M_CC_NPI_UNKNOWN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 case M_CC_NPI_ISDN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 case M_CC_NPI_X121:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 case M_CC_NPI_F69:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 case M_CC_NPI_NATIONAL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 case M_CC_NPI_PRIVATE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 * Check Present Indicator
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 if (calling_num->v_present AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 (calling_num->present > M_CC_PRES_NOT_AVAIL))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 | STATE : code ROUTINE : for_check_calling_party_sub |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 PURPOSE : Checks the content of a calling party sub information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 GLOBAL BOOL for_check_calling_party_sub (T_M_CC_calling_subaddr * calling_subaddr)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 TRACE_FUNCTION ("for_check_calling_party_sub()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 switch (calling_subaddr->tos)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 case M_CC_TOS_NSAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 case M_CC_TOS_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 | STATE : code ROUTINE : for_check_callstate |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 PURPOSE : Checks the content of a callstate information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 GLOBAL void for_check_call_state (T_M_CC_call_state * call_state)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 TRACE_FUNCTION ("for_check_call_state()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 if ( call_state->cs NEQ M_CC_CS_GSM_PLMN ) /* VK 04-jul-97 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 call_state->state = M_CC_CS_10; /* VK 04-jul-97 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 | STATE : code ROUTINE : for_check_cc_cause |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 PURPOSE : Checks the content of a cc cause information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 GLOBAL BOOL for_check_cc_cause (T_M_CC_cc_cause* cc_cause)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 TRACE_FUNCTION ("for_check_cc_cause()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 //TISH patch for OMAPS00129223
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 #if 0
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 * this is a (dirty) "trick" to detect that the cause IE was not present
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 * although mandatory (for some messages): value 0 is reserved, i.e. it is not
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 * expected that it will be sent by a network; CCD/the frame ensures that the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 * memory contents is 0 which will be seen as value if the cause IE was not present
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 if (cc_cause->cause EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 * coding standards other than GSM are not supported (which is a valid option);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 * map the cause value to interworking, unspecified then, skip further checks
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 if (cc_cause->cs NEQ M_CC_CS_GSM_PLMN )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 cc_cause->cause = M_CC_CAUSE_INTERWORKING;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 /* check for reserved Location (octet 3) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 switch (cc_cause->loc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 case M_CC_LOC_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 case M_CC_LOC_PRIV_NET_LOCAL_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 case M_CC_LOC_PUB_NET_LOCAL_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 case M_CC_LOC_TRANSIT_NET:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 case M_CC_LOC_PRIV_NET_REMOTE_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 case M_CC_LOC_PUB_NET_REMOTE_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 case M_CC_LOC_INTERNATIONAL_NET:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 case M_CC_LOC_BEYOND_POINT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 /* check Recommendation (octet 3a) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 * the condition below also checks the value of octet 3a (if present);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 * this stems from GSM 04.08 of Ph1 were the value 1 was defined as indicating
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 * GSM; since Ph2 there is the requirement that octet 3a shall not be included
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 * for coding standard being equal to GSM; however, the design decision is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 * to keep the Ph1 behaviour in order to be a "tolerant" MS and to avoid
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 * interworking problems with Ph1 infrastructure, especially as this case is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 * not treated in GSM 09.90
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 if (cc_cause->v_rec AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 (cc_cause->rec NEQ 1))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 | STATE : code ROUTINE : for_check_progress_indicator|
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 PURPOSE : Checks the content of a progress indicator information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 GLOBAL BOOL for_check_progress_indicator (T_M_CC_progress * progress)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 TRACE_FUNCTION ("for_check_progress_indicator()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 /* coding standard and progress description are not in optional octets (3 and 4) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 if ((progress->v_cs EQ FALSE) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 (progress->v_progress_desc EQ FALSE))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 * map progress description to "Unspecific" if coding standard other than
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 * GSM is used; note that it is an option to not support coding standards
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 * other than GSM (which Condat takes)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 if (progress->cs NEQ M_CC_CS_GSM_PLMN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 progress->progress_desc = MNCC_PROG_UNSPECIFIC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 return TRUE; /* don't care about reserved values for Location anymore of other standards */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 /* check for reserved Location values */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 switch (progress->loc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 case M_CC_LOC_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 case M_CC_LOC_PRIV_NET_LOCAL_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 case M_CC_LOC_PUB_NET_LOCAL_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 case M_CC_LOC_PRIV_NET_REMOTE_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 case M_CC_LOC_PUB_NET_REMOTE_USER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 case M_CC_LOC_BEYOND_POINT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 | STATE : code ROUTINE : for_check_repeat_indicator |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 PURPOSE : Checks the content of a repeat indicator information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 GLOBAL BOOL for_check_repeat_indicator (UBYTE repeat)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 TRACE_FUNCTION ("for_check_repeat_indicator()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 if ((repeat EQ M_CC_REPEAT_CIRCULAR)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 (repeat EQ M_CC_REPEAT_SEQUENTIAL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 | STATE : code ROUTINE : for_check_signal |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 PURPOSE : Checks the content of a signal information
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 element.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 GLOBAL BOOL for_check_signal (UBYTE signal)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 TRACE_FUNCTION ("for_check_signal()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 if ((signal <= M_CC_SIGNAL_HOOK_OFF_ON)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 (signal EQ M_CC_SIGNAL_TONES_OFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 (signal EQ M_CC_SIGNAL_ALERT_OFF))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 | STATE : code ROUTINE : for_set_conditional_error |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 PURPOSE : Stores a detected conditional error.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 GLOBAL void for_set_conditional_error (UBYTE iei)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 GET_INSTANCE_DATA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 TRACE_FUNCTION ("for_set_conditional_error()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 switch (cc_data->error)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 case M_CC_CAUSE_INFO_ELEM_NOT_IMPLEM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 case M_CC_CAUSE_INVALID_MAND_INFO:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 cc_data->error = M_CC_CAUSE_COND_INFO_ELEM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 if (cc_data->error_count < MAX_ERROR_TAGS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 cc_data->error_inf [cc_data->error_count++] = iei;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 | STATE : code ROUTINE : for_set_mandatory_error |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 PURPOSE : Stores a detected mandatory error.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 GLOBAL void for_set_mandatory_error ( UBYTE iei)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 GET_INSTANCE_DATA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 TRACE_FUNCTION ("for_set_mandatory_error()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 switch (cc_data->error)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 case M_CC_CAUSE_INFO_ELEM_NOT_IMPLEM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 case M_CC_CAUSE_COND_INFO_ELEM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 cc_data->error_count = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 /*FALLTHROUGH*/ /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 cc_data->error = M_CC_CAUSE_INVALID_MAND_INFO;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 if (cc_data->error_count < MAX_ERROR_TAGS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 cc_data->error_inf [cc_data->error_count++] = iei;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 | PROJECT : GSM-PS (6147) MODULE : CC_FFK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 | STATE : code ROUTINE : for_set_optional_error |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 PURPOSE : Stores a detected optional error.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 GLOBAL void for_set_optional_error ( UBYTE iei)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 GET_INSTANCE_DATA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 TRACE_FUNCTION ("for_set_optional_error()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 switch (cc_data->error)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 case M_CC_CAUSE_INVALID_MAND_INFO:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 case M_CC_CAUSE_COND_INFO_ELEM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 cc_data->error_count = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 /*FALLTHROUGH*/ /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 * Check whether the iei is compression required
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 if ((iei & 0xF0) EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 for_set_mandatory_error (iei);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 cc_data->error = M_CC_CAUSE_INFO_ELEM_NOT_IMPLEM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 if (cc_data->error_count < MAX_ERROR_TAGS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 cc_data->error_inf [cc_data->error_count++] = iei;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 | | STATE : code ROUTINE : cc_check_critical_error |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 PURPOSE : This function checks wheter a critical error has been
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 detected in the air message. Critical errors which prevent
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 the treatment of an air message are
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 - invalid Message ID
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 - mandatory IE missing
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 - IE coded as comprehension required missing
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 GLOBAL BOOL cc_check_critical_error (UBYTE cc_err)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 TRACE_FUNCTION ("cc_check_critical_error ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 if (cc_err EQ M_CC_CAUSE_INVALID_MAND_INFO OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 cc_err EQ M_CC_CAUSE_MESSAGE_TYPE_NOT_IMPLEM OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 cc_err EQ M_CC_CAUSE_COND_INFO_ELEM OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 cc_err EQ M_CC_CAUSE_SERVICE_NOT_IMPLEM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 return (TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 #endif
|