FreeCalypso > hg > fc-magnetite
comparison src/aci2/aci/cmh_mmt.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:c41a534f33c6 | 3:93999a60b835 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-PS (6147) | |
4 | Modul : CMH_MMT | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : This module provides the test functions related to the | |
18 | protocol stack adapter for mobility management. | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #ifndef CMH_MMT_C | |
23 #define CMH_MMT_C | |
24 #endif | |
25 | |
26 #include "aci_all.h" | |
27 | |
28 /*==== INCLUDES ===================================================*/ | |
29 #include "aci_cmh.h" | |
30 | |
31 | |
32 #ifdef FAX_AND_DATA | |
33 #include "aci_fd.h" | |
34 #endif /* of #ifdef FAX_AND_DATA */ | |
35 | |
36 #include "psa.h" | |
37 #include "psa_mm.h" | |
38 #include "cmh.h" | |
39 #include "cmh_mm.h" | |
40 | |
41 | |
42 #ifdef GPRS | |
43 #ifdef DTI | |
44 #include "dti_conn_mng.h" | |
45 #endif | |
46 #include "gaci.h" | |
47 #include "gaci_cmh.h" | |
48 #include "psa_gmm.h" | |
49 #include "cmh_gmm.h" | |
50 #endif | |
51 | |
52 /*==== CONSTANTS ==================================================*/ | |
53 | |
54 /*==== EXPORT =====================================================*/ | |
55 | |
56 /*==== VARIABLES ==================================================*/ | |
57 | |
58 /*==== FUNCTIONS ==================================================*/ | |
59 LOCAL T_ACI_RETURN get_available_network_list ( T_ACI_CMD_SRC srcId, | |
60 T_ACI_AT_CMD cmd, | |
61 SHORT startIdx, | |
62 SHORT * lastIdx, | |
63 T_ACI_COPS_OPDESC * operLst); | |
64 | |
65 /* | |
66 +--------------------------------------------------------------------+ | |
67 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
68 | STATE : code ROUTINE : qAT_PercentBAND | | |
69 +--------------------------------------------------------------------+ | |
70 | |
71 PURPOSE : This is the functional counterpart to the %BAND=? AT command | |
72 which returns the current multiband configuration. | |
73 | |
74 <MaxBandMode>: highest value of supported band switch modes. | |
75 <AllowedBands>: bitfield of supported bands (manufacturer defined). | |
76 */ | |
77 | |
78 GLOBAL T_ACI_RETURN tAT_PercentBAND(T_ACI_CMD_SRC srcId, | |
79 T_ACI_BAND_MODE *MaxBandMode, | |
80 UBYTE *AllowedBands) | |
81 { | |
82 UBYTE dummy; | |
83 | |
84 TRACE_FUNCTION ("tAT_PercentBAND()"); | |
85 | |
86 /* check command source */ | |
87 if(!cmh_IsVldCmdSrc (srcId)) | |
88 { | |
89 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
90 return( AT_FAIL ); | |
91 } | |
92 | |
93 /* process MaxBandMode parameter */ | |
94 if(MaxBandMode NEQ NULL) | |
95 { | |
96 *MaxBandMode = BAND_MODE_Manual; /* it is currently the highest value for BandMode */ | |
97 } | |
98 | |
99 /* process BandTypeList parameter */ | |
100 if( AllowedBands NEQ NULL ) | |
101 { | |
102 cmhMM_getBandSettings(&dummy, AllowedBands); | |
103 } | |
104 return( AT_CMPL ); | |
105 } | |
106 | |
107 | |
108 /* | |
109 +--------------------------------------------------------------------+ | |
110 | PROJECT : GSM-PS (6147) MODULE : CMH_MMT | | |
111 | STATE : code ROUTINE : tAT_PlusCOPS | | |
112 +--------------------------------------------------------------------+ | |
113 | |
114 PURPOSE : This is the functional counterpart to the +COPS=? AT command | |
115 which is responsible to test for all available network | |
116 operators. | |
117 | |
118 <startIdx>: Start index for reading the list. | |
119 Must be zero. | |
120 <lastIdx> : Last index buffers the last read index of the list. | |
121 Not used, maintained for compatibility reasons. | |
122 <operLst> : List buffer to copy MAX_OPER entries into. | |
123 Not used, maintained for compatibility reasons. | |
124 | |
125 */ | |
126 | |
127 GLOBAL T_ACI_RETURN tAT_PlusCOPS ( T_ACI_CMD_SRC srcId, | |
128 SHORT startIdx, | |
129 SHORT * lastIdx, | |
130 T_ACI_COPS_OPDESC * operLst) | |
131 { | |
132 | |
133 TRACE_FUNCTION ("tAT_PlusCOPS()"); | |
134 | |
135 /* | |
136 *------------------------------------------------------------------- | |
137 * check command source | |
138 *------------------------------------------------------------------- | |
139 */ | |
140 if(!cmh_IsVldCmdSrc (srcId)) | |
141 { | |
142 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
143 return( AT_FAIL ); | |
144 } | |
145 | |
146 /* | |
147 *------------------------------------------------------------------- | |
148 * check entity status | |
149 *------------------------------------------------------------------- | |
150 */ | |
151 if( mmEntStat.curCmd NEQ AT_CMD_NONE ) | |
152 | |
153 return( AT_BUSY ); | |
154 | |
155 /* | |
156 *------------------------------------------------------------------- | |
157 * process the start index parameter in case of a network search | |
158 *------------------------------------------------------------------- | |
159 */ | |
160 | |
161 return(get_available_network_list(srcId, AT_CMD_COPS, startIdx, lastIdx, operLst)); | |
162 | |
163 } | |
164 | |
165 /* | |
166 +--------------------------------------------------------------------+ | |
167 | PROJECT : GSM-PS (6147) MODULE : CMH_MMT | | |
168 | STATE : code ROUTINE : tAT_PercentNRG | | |
169 +--------------------------------------------------------------------+ | |
170 | |
171 PURPOSE : This is the functional counterpart to the %NRG=? | |
172 */ | |
173 | |
174 GLOBAL T_ACI_RETURN tAT_PercentNRG ( T_ACI_CMD_SRC srcId, T_ACI_NRG *NRG_options) | |
175 { | |
176 | |
177 TRACE_FUNCTION ("tAT_PercentNRG()"); | |
178 | |
179 /* | |
180 *------------------------------------------------------------------- | |
181 * check command source | |
182 *------------------------------------------------------------------- | |
183 */ | |
184 if(!cmh_IsVldCmdSrc (srcId)) | |
185 { | |
186 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
187 return( AT_FAIL ); | |
188 } | |
189 | |
190 /* | |
191 *------------------------------------------------------------------- | |
192 * check entity status | |
193 *------------------------------------------------------------------- | |
194 */ | |
195 if( mmEntStat.curCmd NEQ AT_CMD_NONE ) | |
196 { | |
197 TRACE_EVENT("mmEntStat.curCmd NEQ AT_CMD_NONE"); | |
198 return( AT_BUSY ); | |
199 } | |
200 /* | |
201 * The response depends upon the value of the PLMN Mode bit. | |
202 */ | |
203 | |
204 NRG_options->reg_mode = NRG_REG_NotPresent; | |
205 NRG_options->srv_mode = NRG_SRV_NotPresent; | |
206 NRG_options->opr_frmt = NRG_OPR_NotPresent; | |
207 | |
208 NRG_options->srv_mode = (NRG_options->srv_mode | NRG_SRV_Full | NRG_SRV_Limited | NRG_SRV_NoSrv | NRG_SRV_SetRegModeOnly); | |
209 NRG_options->opr_frmt = (NRG_options->opr_frmt | NRG_OPR_Long | NRG_OPR_Short | NRG_OPR_Numeric); | |
210 NRG_options->reg_mode = (NRG_options->reg_mode | NRG_REG_Auto); | |
211 | |
212 if(cmhSIM_isplmnmodebit_set()) | |
213 { | |
214 NRG_options->reg_mode = (NRG_options->reg_mode | NRG_REG_Manual | NRG_REG_Both); | |
215 } | |
216 | |
217 return(AT_CMPL); | |
218 | |
219 } | |
220 | |
221 /* | |
222 +--------------------------------------------------------------------+ | |
223 | PROJECT : GSM-PS (6147) MODULE : CMH_MMT | | |
224 | STATE : code ROUTINE : tAT_PercentCOPS | | |
225 +--------------------------------------------------------------------+ | |
226 | |
227 PURPOSE : This is the functional counterpart to the %COPS=? AT command | |
228 which is responsible to test for all available network | |
229 operators. | |
230 | |
231 <startIdx>: start index for reading the list. | |
232 <lastIdx> : last index buffers the last read index of the | |
233 list | |
234 <operLst> : list buffer to copy MAX_OPER entries into. | |
235 */ | |
236 | |
237 GLOBAL T_ACI_RETURN tAT_PercentCOPS ( T_ACI_CMD_SRC srcId, | |
238 SHORT startIdx, | |
239 SHORT * lastIdx, | |
240 T_ACI_COPS_OPDESC * operLst) | |
241 { | |
242 | |
243 TRACE_FUNCTION ("tAT_PercentCOPS()"); | |
244 | |
245 /* | |
246 *------------------------------------------------------------------- | |
247 * check command source | |
248 *------------------------------------------------------------------- | |
249 */ | |
250 if(!cmh_IsVldCmdSrc (srcId)) | |
251 { | |
252 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
253 return( AT_FAIL ); | |
254 } | |
255 | |
256 /* | |
257 *------------------------------------------------------------------- | |
258 * check entity status | |
259 *------------------------------------------------------------------- | |
260 */ | |
261 if( mmEntStat.curCmd NEQ AT_CMD_NONE ) | |
262 | |
263 return( AT_BUSY ); | |
264 | |
265 /* | |
266 *------------------------------------------------------------------- | |
267 * process the start index parameter in case of a network search | |
268 *------------------------------------------------------------------- | |
269 */ | |
270 | |
271 return(get_available_network_list(srcId, AT_CMD_P_COPS, startIdx, lastIdx, operLst)); | |
272 | |
273 } | |
274 | |
275 | |
276 /* | |
277 +--------------------------------------------------------------------+ | |
278 | PROJECT : GSM-PS (6147) MODULE : CMH_MMT | | |
279 | STATE : code ROUTINE : get_available_network_list| | |
280 +--------------------------------------------------------------------+ | |
281 | |
282 PURPOSE : This is common function for +COPS and %COPS test functions. | |
283 */ | |
284 | |
285 LOCAL T_ACI_RETURN get_available_network_list ( T_ACI_CMD_SRC srcId, | |
286 T_ACI_AT_CMD cmd, | |
287 SHORT startIdx, | |
288 SHORT * lastIdx, | |
289 T_ACI_COPS_OPDESC * operLst) | |
290 { | |
291 UBYTE lstIdx; /* holds list index */ | |
292 SHORT mcc, mnc; /* holds converted mnc and mcc */ | |
293 T_ACI_RETURN retCd; /* holds return code */ | |
294 | |
295 TRACE_FUNCTION ("get_available_network_list()"); | |
296 | |
297 /* | |
298 *------------------------------------------------------------------- | |
299 * process the start index parameter in case of a network search | |
300 *------------------------------------------------------------------- | |
301 */ | |
302 if(!cmhSIM_isplmnmodebit_set()) | |
303 { | |
304 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow ); | |
305 return( AT_FAIL ); | |
306 } | |
307 | |
308 if( startIdx EQ 0 ) | |
309 { | |
310 mmEntStat.curCmd = cmd; | |
311 mmEntStat.entOwn = mmShrdPrm.owner = srcId; | |
312 | |
313 #if defined (GPRS) AND defined (DTI) | |
314 if( psaG_MM_CMD_NET_SRCH ( ) < 0 ) /* search for network */ | |
315 #else | |
316 if( psaMM_NetSrch () < 0 ) /* search for network */ | |
317 #endif | |
318 { | |
319 TRACE_EVENT( "FATAL RETURN psaMM_NetSrch in COPS" ); | |
320 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal ); | |
321 return( AT_FAIL ); | |
322 } | |
323 | |
324 retCd = AT_EXCT; | |
325 } | |
326 else | |
327 { | |
328 /* | |
329 * For g23m, it makes no sense to support a startIdx different from zero | |
330 * as MM only delivers GMMREG_MAX_PLMN_ID PLMNs which is identical to | |
331 * MAX_PLMN_ID. So the MMI already gets all the desired information | |
332 * by the callback rAT_PlusCOPS(). | |
333 * For other programs like Neptune this maybe different, this is for | |
334 * further study. | |
335 */ | |
336 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
337 return( AT_FAIL ); | |
338 } | |
339 | |
340 /* | |
341 *------------------------------------------------------------------- | |
342 * log command execution | |
343 *------------------------------------------------------------------- | |
344 */ | |
345 #if defined SMI OR defined MFW OR defined FF_MMI_RIV | |
346 { | |
347 T_ACI_CLOG cmdLog; /* holds logging info */ | |
348 cmdLog.atCmd = cmd; | |
349 cmdLog.cmdType = CLOG_TYPE_Test; | |
350 cmdLog.retCode = retCd; | |
351 cmdLog.cId = ACI_NumParmNotPresent; | |
352 cmdLog.sId = ACI_NumParmNotPresent; | |
353 cmdLog.cmdPrm.tCOPS.srcId = srcId; | |
354 cmdLog.cmdPrm.tCOPS.startIdx = startIdx; | |
355 cmdLog.cmdPrm.tCOPS.lastIdx = lastIdx; | |
356 cmdLog.cmdPrm.tCOPS.operLst = operLst; | |
357 | |
358 rAT_PercentCLOG( &cmdLog ); | |
359 } | |
360 #endif | |
361 return( retCd ); | |
362 } | |
363 | |
364 /*==== EOF ========================================================*/ |