comparison src/g23m-aci/aci/psa_gmmp.c @ 162:53929b40109c

src/g23m-aci: initial import from TCS3.2/LoCosto
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Oct 2016 02:02:43 +0000
parents
children b135e1505ae4
comparison
equal deleted inserted replaced
161:4557e2a9c18e 162:53929b40109c
1 /*
2 +-----------------------------------------------------------------------------
3 | Project :
4 | Modul :
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 defines the processing functions for the
18 | primitives send to the protocol stack adapter by the
19 | registrations part of GPRS mobility management ( GMM ).
20 +-----------------------------------------------------------------------------
21 */
22
23 #if defined (GPRS) && defined (DTI)
24
25 #ifndef PSA_GMMP_C
26 #define PSA_GMMP_C
27 #endif
28
29 #include "aci_all.h"
30 /*==== INCLUDES ===================================================*/
31 #include "dti.h" /* functionality of the dti library */
32 #include "aci_cmh.h"
33 #include "ati_cmd.h"
34 #include "aci_cmd.h"
35
36 #include "aci.h"
37
38 #include "dti.h"
39 #include "dti_conn_mng.h"
40 #include "dti_cntrl_mng.h"
41
42 #include "gaci.h"
43 #include "gaci_cmh.h"
44 #include "psa.h"
45 #include "psa_gmm.h"
46 #include "psa_mm.h"
47 #include "cmh.h"
48 #include "cmh_gmm.h"
49
50 #ifdef FF_GPF_TCPIP
51 #include "dcm_utils.h"
52 #include "dcm_state.h"
53 #include "dcm_env.h"
54 #endif
55 #include "dcm_f.h"
56 #include "rvm/rvm_api.h"
57
58
59
60 /*==== CONSTANTS ==================================================*/
61
62 /*==== TYPES ======================================================*/
63
64
65 /*==== EXPORT =====================================================*/
66
67
68 /*==== VARIABLES ==================================================*/
69
70
71 /*==== FUNCTIONS ==================================================*/
72
73 /*
74 +-------------------------------------------------------------------+
75 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
76 | ROUTINE : psa_gmmreg_attach_cnf |
77 +-------------------------------------------------------------------+
78
79 PURPOSE : processes the GMMREG_ATTACH_CNF primitive send by GMM.
80 this confirms a successful attach.
81 */
82 GLOBAL void psa_gmmreg_attach_cnf ( T_GMMREG_ATTACH_CNF *gmmreg_attach_cnf )
83 {
84
85 TRACE_FUNCTION ("psa_gmmreg_attach_cnf()");
86
87 GMM_PRIM_TRACE_2("ATT_CNF",dbg_attachType(gmmreg_attach_cnf->attach_type),
88 dbg_searchRunning(gmmreg_attach_cnf->search_running));
89
90
91 /* Attach Cnf will be sent when RR starts the power scanning
92 and hence ignore it */
93 if (gmmreg_attach_cnf->bootup_cause EQ PWR_SCAN_START)
94 {
95 TRACE_EVENT("Dummy cnf from the lower layer");
96 PFREE(gmmreg_attach_cnf);
97 return;
98 }
99
100 /*
101 *-------------------------------------------------------------------
102 * notify ACI
103 *-------------------------------------------------------------------
104 */
105 cmhGMM_setPLMN(&gmmreg_attach_cnf->plmn);
106 gmmShrdPrm.lac = gmmreg_attach_cnf->lac;
107 gmmShrdPrm.cid = gmmreg_attach_cnf->cid;
108
109 /* ACI-SPR-17218: Map gprs_indicator to ACI state */
110 switch( gmmreg_attach_cnf->gprs_indicator )
111 {
112 case GMM_GPRS_SUPP_NO:
113 gmmShrdPrm.gprs_indicator = P_CREG_GPRS_Not_Supported;
114 break;
115 case GMM_GPRS_SUPP_LIMITED:
116 gmmShrdPrm.gprs_indicator = P_CREG_GPRS_Supported_Limited_Serv;
117 break;
118 case GMM_GPRS_SUPP_YES:
119 gmmShrdPrm.gprs_indicator = P_CREG_GPRS_Supported;
120 break;
121 default:
122 gmmShrdPrm.gprs_indicator = P_CREG_GPRS_Support_Unknown;
123 break;
124 }
125 gmmShrdPrm.rt = gmmreg_attach_cnf->rt;
126
127 TRACE_EVENT_P2("NEW ! gmmShrdPrm.lac: %04X, gmmShrdPrm.cid: %04X", gmmShrdPrm.lac, gmmShrdPrm.cid);
128
129 psaGMM_NetworkRegistrationStatus(GMMREG_ATTACH_CNF, gmmreg_attach_cnf);
130
131 cmhGMM_Attached( gmmreg_attach_cnf->attach_type, &gmmreg_attach_cnf->plmn, gmmreg_attach_cnf->search_running );
132
133 switch ( gmmreg_attach_cnf->attach_type )
134 {
135 case GMMREG_AT_GPRS:
136 case GMMREG_AT_COMB:
137 case GMMREG_AT_IMSI:
138 {
139 PALLOC (mmr_reg_cnf, MMR_REG_CNF);
140 memcpy(&mmr_reg_cnf->plmn, &gmmreg_attach_cnf->plmn, sizeof(T_plmn));
141 mmr_reg_cnf->lac = gmmreg_attach_cnf->lac;
142 mmr_reg_cnf->cid = gmmreg_attach_cnf->cid;
143 mmr_reg_cnf->bootup_cause = gmmreg_attach_cnf->bootup_cause;
144 psa_mmr_reg_cnf(mmr_reg_cnf);
145 }
146 break;
147 }
148
149 /*
150 *-------------------------------------------------------------------
151 * free the primitive buffer
152 *-------------------------------------------------------------------
153 */
154 PFREE (gmmreg_attach_cnf);
155 }
156
157 /*
158 +-------------------------------------------------------------------+
159 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
160 | ROUTINE : psa_gmmreg_attach_rej |
161 +-------------------------------------------------------------------+
162
163 PURPOSE : processes the GMMREG_ATTACH_REJ primitive send by GMM.
164 this confirms a failed attach.
165 */
166 EXTERN T_DCM_ENV_CTRL_BLK *dcm_env_ctrl_blk_p;
167 GLOBAL void psa_gmmreg_attach_rej ( T_GMMREG_ATTACH_REJ *gmmreg_attach_rej )
168 {
169
170 TRACE_FUNCTION ("psa_gmmreg_attach_rej()");
171
172 GMM_PRIM_TRACE_2("ATT_REJ",dbg_detachType(gmmreg_attach_rej->detach_type),
173 dbg_searchRunning(gmmreg_attach_rej->search_running));
174 /*
175 *-------------------------------------------------------------------
176 * notify ACI
177 *-------------------------------------------------------------------
178 */
179 //pinghua add to avoid no net signal case
180 #ifdef FF_GPF_TCPIP
181 if(is_gpf_tcpip_call())
182 {
183 T_DCM_STATUS_IND_MSG msg;
184 msg.hdr.msg_id = DCM_NEXT_CMD_STOP_MSG;
185 dcm_send_message(msg, dcm_env_ctrl_blk_p->substate[0]);
186
187 }
188 #endif /* FF_GPF_TCPIP */
189
190 //end
191
192 psaGMM_NetworkRegistrationStatus(GMMREG_ATTACH_REJ, gmmreg_attach_rej);
193
194 cmhGMM_NoAttach (gmmreg_attach_rej->detach_type,gmmreg_attach_rej->service,
195 gmmreg_attach_rej->search_running );
196
197 switch ( gmmreg_attach_rej->detach_type )
198 {
199 case GMMREG_DT_COMB:
200 case GMMREG_DT_IMSI:
201 /*
202 * No MM information, if
203 * IMSI wasn' t registered and wasn' t requested
204 */
205 if ( ( gmmShrdPrm.last_attach_type EQ ATTACH_TYPE_DETACHED OR /* wasn' t registered */
206 gmmShrdPrm.last_attach_type EQ GMMREG_AT_GPRS ) AND
207 ( gmmShrdPrm.requested_attach_type EQ ATTACH_TYPE_DETACHED OR /* wasn' t requested */
208 gmmShrdPrm.requested_attach_type EQ GMMREG_AT_GPRS ) )
209 break;
210
211 /* else walk through */
212 /*lint -fallthrough */
213 case GMMREG_DT_LIMITED_SERVICE:
214 case GMMREG_DT_SIM_REMOVED:
215 {
216 PALLOC (mmr_nreg_ind, MMR_NREG_IND); /* T_MMR_NREG_IND */
217 mmr_nreg_ind->cause = gmmreg_attach_rej->cause;
218 mmr_nreg_ind->service =
219 cmhGMM_translate_gmm_cause_to_nreg_cs(gmmreg_attach_rej->service);
220 mmr_nreg_ind->search_running = gmmreg_attach_rej->search_running;
221 psa_mmr_nreg_ind(mmr_nreg_ind);
222 }
223 break;
224 case GMMREG_DT_POWER_OFF:
225 case GMMREG_DT_GPRS:
226 case GMMREG_DT_DISABLE_GPRS:
227 default:
228 break;
229 }
230
231 /*
232 *-------------------------------------------------------------------
233 * free the primitive buffer
234 *-------------------------------------------------------------------
235 */
236 PFREE (gmmreg_attach_rej);
237
238 }
239
240 /*
241 +-------------------------------------------------------------------+
242 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
243 | ROUTINE : psa_gmmreg_detach_cnf |
244 +-------------------------------------------------------------------+
245
246 PURPOSE : processes the GMMREG_DETACH_CNF primitive send by GMM.
247 this confirms a successful detach.
248 */
249 GLOBAL void psa_gmmreg_detach_cnf ( T_GMMREG_DETACH_CNF *gmmreg_detach_cnf )
250 {
251 TRACE_FUNCTION ("psa_gmmreg_detach_cnf()");
252
253 GMM_PRIM_TRACE_1("DET_CNF",
254 dbg_detachType(gmmreg_detach_cnf->detach_type));
255
256 /*
257 *-------------------------------------------------------------------
258 * notify ACI
259 *-------------------------------------------------------------------
260 */
261 psaGMM_NetworkRegistrationStatus(GMMREG_DETACH_CNF, gmmreg_detach_cnf);
262
263 cmhGMM_Detached( gmmreg_detach_cnf->detach_type );
264
265 switch ( gmmreg_detach_cnf->detach_type )
266 {
267 case GMMREG_DT_SOFT_OFF:
268 {
269 PALLOC (mmr_nreg_cnf, MMR_NREG_CNF);
270 mmr_nreg_cnf->detach_cause = CS_SOFT_OFF;
271 psa_mmr_nreg_cnf(mmr_nreg_cnf);
272 }
273 break;
274
275 case GMMREG_DT_POWER_OFF:
276 {
277 PALLOC (mmr_nreg_cnf, MMR_NREG_CNF);
278 mmr_nreg_cnf->detach_cause = CS_POW_OFF;
279 psa_mmr_nreg_cnf(mmr_nreg_cnf);
280 }
281 break;
282
283 case GMMREG_DT_COMB: /* is set for e.g. AT+COPS=2 or AT%NRG=0,2 */
284 case GMMREG_DT_SIM_REMOVED:
285 {
286 PALLOC (mmr_nreg_cnf, MMR_NREG_CNF);
287 mmr_nreg_cnf->detach_cause = CS_SIM_REM;
288 psa_mmr_nreg_cnf(mmr_nreg_cnf);
289 }
290 break;
291
292 case GMMREG_DT_GPRS:
293 case GMMREG_DT_IMSI:
294 case GMMREG_DT_DISABLE_GPRS:
295 case GMMREG_DT_LIMITED_SERVICE:
296 break;
297 }
298
299 /*
300 *-------------------------------------------------------------------
301 * free the primitive buffer
302 *-------------------------------------------------------------------
303 */
304 PFREE (gmmreg_detach_cnf);
305 }
306
307 /*
308 +-------------------------------------------------------------------+
309 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
310 | ROUTINE : psa_gmmreg_detach_ind |
311 +-------------------------------------------------------------------+
312
313 PURPOSE : processes the GMMREG_DETACH_IND primitive send by GMM.
314 the network initiated detach.
315 */
316 EXTERN T_DCM_ENV_CTRL_BLK *dcm_env_ctrl_blk_p;
317
318 GLOBAL void psa_gmmreg_detach_ind ( T_GMMREG_DETACH_IND *gmmreg_detach_ind )
319 {
320
321 TRACE_FUNCTION ("psa_gmmreg_detach_ind()");
322
323 GMM_PRIM_TRACE_2("DET_IND",dbg_detachType(gmmreg_detach_ind->detach_type),
324 dbg_searchRunning(gmmreg_detach_ind->search_running));
325
326
327
328 //pinghua add to avoid net drop off due to no signal
329 #ifdef FF_GPF_TCPIP
330 if(is_gpf_tcpip_call())
331 {
332
333 if(dcm_env_ctrl_blk_p->state[0] == DCM_CONN_ACTIVATED AND
334 dcm_env_ctrl_blk_p->substate[0] == DCM_SUB_NO_ACTION )
335 {
336 T_DCM_CLOSE_CONN_REQ_MSG dcm_close_conn_req_msg;
337 U8 current_row = dcm_env_ctrl_blk_p->current_row ;
338
339 memset(&dcm_close_conn_req_msg, 0x00, sizeof(T_DCM_CLOSE_CONN_REQ_MSG));
340
341 dcm_close_conn_req_msg.hdr.msg_id = DCM_CLOSE_CONN_REQ_MSG;
342 dcm_close_conn_req_msg.close_req.api_instance = dcm_env_ctrl_blk_p->ipu_list[current_row].api_instance;
343 dcm_close_conn_req_msg.close_req.bearer_handle = dcm_env_ctrl_blk_p->ipu_list[current_row].bearer_handle;
344 dcm_process_network_drop(&dcm_close_conn_req_msg);
345
346
347 }
348 }
349 #endif /* FF_GPF_TCPIP */
350
351 //end
352
353
354 /*
355 *-------------------------------------------------------------------
356 * notify ACI
357 *-------------------------------------------------------------------
358 */
359 psaGMM_NetworkRegistrationStatus(GMMREG_DETACH_IND, gmmreg_detach_ind);
360
361 cmhGMM_NetDetach( gmmreg_detach_ind->detach_type,
362 gmmreg_detach_ind->service,
363 gmmreg_detach_ind->search_running );
364 switch ( gmmreg_detach_ind->detach_type )
365 {
366 case GMMREG_DT_COMB:
367 case GMMREG_DT_IMSI:
368 case GMMREG_DT_LIMITED_SERVICE:
369 {
370 PALLOC (mmr_nreg_ind, MMR_NREG_IND);
371 mmr_nreg_ind->cause = gmmreg_detach_ind->cause;
372 mmr_nreg_ind->service =
373 cmhGMM_translate_gmm_cause_to_nreg_cs(gmmreg_detach_ind->service);
374 mmr_nreg_ind->search_running = gmmreg_detach_ind->search_running;
375 psa_mmr_nreg_ind(mmr_nreg_ind);
376 }
377 break;
378 case GMMREG_DT_POWER_OFF:
379 case GMMREG_DT_SIM_REMOVED:
380 case GMMREG_DT_GPRS:
381 case GMMREG_DT_DISABLE_GPRS:
382 cmhGMM_send_NetworkRegistrationStatus( CGREG_STAT_NOT_REG, P_CGREG_STAT_NOT_REG );
383 /*lint -fallthrough */
384 default:
385 break;
386 }
387
388 /*
389 *-------------------------------------------------------------------
390 * free the primitive buffer
391 *-------------------------------------------------------------------
392 */
393 PFREE (gmmreg_detach_ind);
394
395 }
396
397 /*
398 +-------------------------------------------------------------------+
399 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
400 | ROUTINE : psa_gmmreg_plmn_ind |
401 +-------------------------------------------------------------------+
402
403 PURPOSE : processes the GMMREG_PLMN_IND primitive send by GMM.
404 this indicate a PLMN list to the MMI.
405 */
406
407 GLOBAL void psa_gmmreg_plmn_ind ( T_GMMREG_PLMN_IND *gmmreg_plmn_ind )
408 {
409 short i;
410 TRACE_FUNCTION ("psa_gmmreg_plmn_ind()");
411
412 /*
413 *-------------------------------------------------------------------
414 * copy primitive for MM and update shared parameter from GMM
415 *-------------------------------------------------------------------
416 */
417 {
418 PALLOC (mmr_plmn_ind, MMR_PLMN_IND); /* T_MMR_PLMN_IND */
419
420 mmr_plmn_ind->cause = gmmreg_plmn_ind->cause;
421
422 for (i = 0; i < MAX_PLMN_ID; i++)
423 {
424 mmr_plmn_ind->plmn[i] = gmmreg_plmn_ind->plmn[i];
425 mmr_plmn_ind->forb_ind[i] = gmmreg_plmn_ind->forb_ind[i];
426 mmr_plmn_ind->rxlevel[i] = gmmreg_plmn_ind->rxlevel[i];
427 mmr_plmn_ind->lac_list[i] = gmmreg_plmn_ind->lac_list[i];
428 /* shared parameter */
429 gmmShrdPrm.gprs_status[i] = gmmreg_plmn_ind->gprs_status[i];
430
431 if ( mmr_plmn_ind->plmn[i].v_plmn EQ INVLD_PLMN )
432 break;
433 }
434
435 /*
436 *-------------------------------------------------------------------
437 * call MM primitive handler for update shared parameter and notify ACI
438 *-------------------------------------------------------------------
439 */
440 psa_mmr_plmn_ind(mmr_plmn_ind);
441 }
442 /*
443 *-------------------------------------------------------------------
444 * notify ACI
445 *-------------------------------------------------------------------
446 */
447 cmhGMM_Plmn();
448
449 /*
450 *-------------------------------------------------------------------
451 * free the primitive buffer
452 *-------------------------------------------------------------------
453 */
454 PFREE (gmmreg_plmn_ind);
455 }
456
457 /*
458 +-------------------------------------------------------------------+
459 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
460 | ROUTINE : psa_gmmreg_suspend_ind |
461 +-------------------------------------------------------------------+
462
463 PURPOSE : processes the GMMREG_SUSPEND_IND primitive send by GMM.
464 this inform MMI if whether full service or limited service is available.
465 */
466 GLOBAL void psa_gmmreg_suspend_ind( T_GMMREG_SUSPEND_IND *gmmreg_suspend_ind )
467 {
468
469 TRACE_FUNCTION ("psa_gmmreg_suspend_ind()");
470
471 GMM_PRIM_TRACE_1("SUS_IND",dbg_cellState(gmmreg_suspend_ind->cell_state));
472
473 /*
474 *-------------------------------------------------------------------
475 * notify ACI
476 *-------------------------------------------------------------------
477 */
478 psaGMM_NetworkRegistrationStatus(GMMREG_SUSPEND_IND, gmmreg_suspend_ind);
479
480 cmhGMM_Suspend( gmmreg_suspend_ind->cell_state );
481
482 /*
483 *-------------------------------------------------------------------
484 * free the primitive buffer
485 *-------------------------------------------------------------------
486 */
487 PFREE (gmmreg_suspend_ind);
488
489 }
490
491 /*
492 +-------------------------------------------------------------------+
493 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
494 | ROUTINE : psa_gmmreg_resume_ind |
495 +-------------------------------------------------------------------+
496
497 PURPOSE : processes the GMMREG_RESUME_IND primitive send by GMM.
498 this inform MMI that GPRS full service is now available.
499 */
500 GLOBAL void psa_gmmreg_resume_ind( T_GMMREG_RESUME_IND *gmmreg_resume_ind )
501 {
502
503 TRACE_FUNCTION ("psa_gmmreg_resume_ind()");
504
505 /*
506 *-------------------------------------------------------------------
507 * notify ACI
508 *-------------------------------------------------------------------
509 */
510 psaGMM_NetworkRegistrationStatus(GMMREG_RESUME_IND, gmmreg_resume_ind);
511
512 cmhGMM_Resume();
513
514 /*
515 *-------------------------------------------------------------------
516 * free the primitive buffer
517 *-------------------------------------------------------------------
518 */
519 PFREE (gmmreg_resume_ind);
520
521 }
522
523 /*
524 +-------------------------------------------------------------------+
525 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
526 | ROUTINE : psa_gmmreg_info_ind |
527 +-------------------------------------------------------------------+
528
529 PURPOSE : processes the GMMREG_INFO_IND primitive send by GMM.
530 this transmit the information provided by the GMM INFORMATION message to the MMI.
531 */
532 GLOBAL void psa_gmmreg_info_ind( T_GMMREG_INFO_IND *gmmreg_info_ind )
533 {
534
535 TRACE_FUNCTION ("psa_gmmreg_info_ind()");
536
537 /*
538 *-------------------------------------------------------------------
539 * notify ACI
540 *-------------------------------------------------------------------
541 */
542 {
543 PALLOC (mmr_info_ind, MMR_INFO_IND);
544 memcpy (&(mmr_info_ind->plmn), &(gmmreg_info_ind->plmn), sizeof (T_plmn));
545 memcpy (&(mmr_info_ind->full_name), &(gmmreg_info_ind->full_net_name_gmm), sizeof (T_full_net_name_gmm));
546 memcpy (&(mmr_info_ind->short_name), &(gmmreg_info_ind->short_net_name_gmm), sizeof (T_short_net_name_gmm));
547 memcpy (&(mmr_info_ind->ntz), &(gmmreg_info_ind->net_time_zone), sizeof (T_net_time_zone));
548 memcpy (&(mmr_info_ind->time), &(gmmreg_info_ind->net_time), sizeof (T_net_time));
549
550 psa_mmr_info_ind(mmr_info_ind);
551 }
552
553 /*cmhGMM_Info();*/
554
555 /*
556 *-------------------------------------------------------------------
557 * free the primitive buffer
558 *-------------------------------------------------------------------
559 */
560 PFREE (gmmreg_info_ind);
561
562 }
563
564
565 /*
566 +-------------------------------------------------------------------+
567 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
568 | ROUTINE : psa_gmmreg_ciphering_ind|
569 +-------------------------------------------------------------------+
570
571 PURPOSE : processes the GMMREG_CIPHERING_IND primitive send by GMM.
572 */
573 GLOBAL void psa_gmmreg_ciphering_ind(T_GMMREG_CIPHERING_IND *gmmreg_ciphering_ind)
574 {
575
576 TRACE_FUNCTION ("psa_gmmreg_ciphering_ind()");
577
578 cmhGMM_CipheringInd (gmmreg_ciphering_ind->gsm_ciph,gmmreg_ciphering_ind->gprs_ciph);
579
580
581 /*
582 *-------------------------------------------------------------------
583 * free the primitive buffer
584 *-------------------------------------------------------------------
585 */
586 PFREE (gmmreg_ciphering_ind);
587
588 }
589
590 /*
591 +-------------------------------------------------------------------+
592 | PROJECT : GPRS (8441) MODULE : PSA_GMMP |
593 | ROUTINE : psa_gmmreg_ahplmn_ind |
594 +-------------------------------------------------------------------+
595
596 PURPOSE : processes the GMMREG_AHPLMN_IND primitive send by GMM.
597 */
598 GLOBAL void psa_gmmreg_ahplmn_ind(T_GMMREG_AHPLMN_IND *gmmreg_ahplmn_ind)
599 {
600 TRACE_FUNCTION("psa_gmmreg_ahplmn_ind()");
601
602 {
603 PALLOC(mmr_ahplmn_ind, MMR_AHPLMN_IND);
604 mmr_ahplmn_ind->ahplmn = gmmreg_ahplmn_ind->ahplmn;
605 psa_mmr_ahplmn_ind(mmr_ahplmn_ind);
606 }
607
608 psaGMM_NetworkRegistrationStatus(GMMREG_AHPLMN_IND, gmmreg_ahplmn_ind);
609
610 PFREE(gmmreg_ahplmn_ind);
611 }
612
613
614 #endif /* GPRS */
615 /*==== EOF =========================================================*/