FreeCalypso > hg > leo2moko-debug
comparison g23m/condat/ms/src/bmi/MmiNetwork.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /******************************************************************************* | |
2 | |
3 CONDAT (UK) | |
4 | |
5 ******************************************************************************** | |
6 | |
7 This software product is the property of Condat (UK) Ltd and may not be | |
8 disclosed to any third party without the express permission of the owner. | |
9 | |
10 ******************************************************************************** | |
11 | |
12 $Project name: Basic MMI | |
13 $Project code: BMI (6349) | |
14 $Module: Network | |
15 $File: MmiNetwork.c | |
16 $Revision: 1.0 | |
17 | |
18 $Author: Condat(UK) | |
19 $Date: 22/02/01 | |
20 | |
21 ******************************************************************************** | |
22 | |
23 Description: | |
24 | |
25 | |
26 | |
27 ******************************************************************************** | |
28 | |
29 $Hist | |
30 | |
31 Feb 15, 2006 ER: OMAPS00065203 x0pleela | |
32 Description: Cingular Operator Name Prioritization implementation required | |
33 Solution: Incorporated review comments | |
34 - Included flag NEPTUNE_BOARD to retain old code for operator get name and | |
35 added new code for this ER also | |
36 - Removed the global variable gOper_sel_done and have introduced 2 functions which will | |
37 set and get the status of the operator selection | |
38 | |
39 Feb 09, 2006 ER: OMAPS00065203 x0pleela | |
40 Description: Cingular Operator Name Prioritization implementation required | |
41 Solution: In function network(), check if EONS is allocated and activated. If not, get operator name from other sources | |
42 Removed CPHS check code as prioritized operator name is already updated to network_data | |
43 | |
44 xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
45 Added a please wait screen so that the sim is updated with the new code before | |
46 populating the list again when deleting or when entering a newtwork code | |
47 | |
48 Nov 02, 2005 REF: omaps00044855 Sumanth Kumar.C | |
49 Description: Phone crashes on invoking Manual option in Network Selection Menu. | |
50 Solution: Memory free of network_data.pplmn is done when the editor exits instead of | |
51 list exit by option selection so that the pplmn data is available when the list is invoked once again. | |
52 | |
53 Jun 14, 2005 REF: MMI-FIX-30439 x0018858 | |
54 Description: The homezone/cityzone tags were not being displayed properly. | |
55 Solution: Modified to save the tags properly in caches and also made the | |
56 appropriate modifications to update the same properly during mobility. | |
57 | |
58 Sep 23, 2004 REF: CRR 24562 xvilliva | |
59 Bug: Enable/disable the manual network selection option depending | |
60 on ENS. | |
61 Fix: If the manual network selection is disabled we check if an | |
62 error is returned and flash an alert to the user. | |
63 | |
64 Sep 8, 2004 REF: CRR 16062 xvilliva | |
65 Bug: If a PLMN is selected (by using the middle key) from the PLMN list | |
66 presented upon a manual search the D-Sample may freeze. | |
67 Fix: The "KEY_MNUSELECT" event is also monitered which was not | |
68 done earlier and was resulting in the PLMN list shown again. | |
69 | |
70 Jul 21, 2004 REF: CRR 13348 xvilliva | |
71 Bug: After selecting HPLMN manually, the idle screen is not shown. | |
72 Fix: After the "Network Selected" alert is flashed, we destroy the | |
73 phonebook menu to return to the idle screen. | |
74 | |
75 | |
76 // Apr 14, 2004 REF: CRR 12641 xpradipg | |
77 // The network when selected using "Automatic" is not showing an alert after selection. | |
78 // A flag has been used to show the alert when ever network is selected using | |
79 // "Automatic" method. As the flag is present it will not flash this alert when the | |
80 // device is restarted. | |
81 | |
82 25/10/00 Original Condat(UK) BMI version. | |
83 | |
84 08-03-2006 REF: OMAPS00061049 x0020906 | |
85 | |
86 Bug: The sample crashed many times while trying to camp onto a FPLMN. PCO stucked when tracing this TC, | |
87 therefore no PCO traces available; only L1 traces (TestHarness). | |
88 | |
89 Fix: During manual selection from the indication will get the plmn list count and used the count for allocating | |
90 plmn_list pointer and then destorying the list and free the pointer allocation when particular network is selected | |
91 or when back softkey is pressed. | |
92 | |
93 | |
94 $End | |
95 // Issue Number : SPR#12654 on 07/04/04 by Pradeep/Vadiraj | |
96 *******************************************************************************/ | |
97 | |
98 | |
99 /******************************************************************************* | |
100 | |
101 Include Files | |
102 | |
103 *******************************************************************************/ | |
104 | |
105 #define ENTITY_MFW | |
106 | |
107 /* includes */ | |
108 #include <string.h> | |
109 #include <stdio.h> | |
110 #include <stdlib.h> | |
111 | |
112 #if defined (NEW_FRAME) | |
113 | |
114 #include "typedefs.h" | |
115 #include "vsi.h" | |
116 #include "pei.h" | |
117 #include "custom.h" | |
118 #include "gsm.h" | |
119 | |
120 #else | |
121 | |
122 #include "STDDEFS.H" | |
123 #include "custom.h" | |
124 #include "gsm.h" | |
125 #include "vsi.h" | |
126 | |
127 #endif | |
128 #include "mfw_sys.h" | |
129 | |
130 #include "prim.h" | |
131 | |
132 #include "mfw_mfw.h" | |
133 #include "mfw_win.h" | |
134 #include "mfw_kbd.h" | |
135 /* SPR#1428 - SH - New Editor changes */ | |
136 #ifndef NEW_EDITOR | |
137 #include "mfw_edt.h" | |
138 #endif | |
139 #include "mfw_lng.h" | |
140 #include "mfw_icn.h" | |
141 #include "mfw_mnu.h" | |
142 #include "mfw_tim.h" | |
143 #include "mfw_sim.h" | |
144 #include "mfw_nm.h" | |
145 #include "mfw_cm.h" | |
146 #include "mfw_sat.h" | |
147 #include "mfw_phb.h" | |
148 #include "mfw_sms.h" | |
149 | |
150 | |
151 #include "dspl.h" | |
152 | |
153 #include "ksd.h" | |
154 #include "psa.h" | |
155 | |
156 | |
157 #include "MmiDummy.h" | |
158 #include "MmiMmi.h" | |
159 #include "MmiMain.h" | |
160 #include "MmiStart.h" | |
161 #include "MmiPins.h" | |
162 | |
163 #include "MmiDialogs.h" | |
164 #include "MmiLists.h" | |
165 /* SPR#1428 - SH - New Editor changes */ | |
166 #ifdef NEW_EDITOR | |
167 #include "ATBCommon.h" | |
168 #include "ATBDisplay.h" | |
169 #include "ATBEditor.h" | |
170 #include "AUIEditor.h" | |
171 #else | |
172 #include "MmiEditor.h" | |
173 #endif | |
174 | |
175 #include "MmiMenu.h" | |
176 #include "MmiIdle.h" | |
177 #include "mmiCall.h" | |
178 #include "MmiBookController.h" | |
179 #include "MmiNetwork.h" | |
180 #include "MmiSoftKeys.h" | |
181 #include "MmiSounds.h" | |
182 #include "MmiPcm.h" | |
183 | |
184 #include "prim.h" | |
185 #ifndef PCM_2_FFS | |
186 #include "pcm.h" | |
187 #endif | |
188 | |
189 #include "mfw_ffs.h" | |
190 #include "MmiCPHS.h" | |
191 | |
192 #ifdef MMI_HOMEZONE_ENABLED | |
193 #include "MmiHomezone.h" | |
194 #endif | |
195 | |
196 #include "MmiNetwork.h" | |
197 | |
198 #include "cus_aci.h" | |
199 | |
200 #include "mmiColours.h" | |
201 | |
202 /* BEGIN ADD: Neptune Alignment */ | |
203 #ifdef NEPTUNE_BOARD | |
204 #include "bmi_integ_misc.h" | |
205 #endif | |
206 /* END ADD: Neptune Alignment */ | |
207 #ifdef NEPTUNE_BOARD | |
208 /* PLMN list count obtained from indication, stored in the global static variable*/ | |
209 /*OMAPS00061049 - 08-03-2006 */ | |
210 static int Plmn_list_count = 0; | |
211 #endif | |
212 | |
213 | |
214 /* | |
215 * Data for top window | |
216 */ | |
217 typedef struct | |
218 { | |
219 T_MMI_CONTROL mmi_control; | |
220 T_MFW_HND network_win; /* MFW win handler */ | |
221 T_MFW_HND nm_handle; /* MFW network handler */ | |
222 UBYTE aborted; | |
223 UBYTE forbidden; | |
224 UBYTE keep_plmn_list; | |
225 T_MFW_NETWORK_STRUCT *pplmn; /* pref. PLMN list */ | |
226 T_MFW_PPLMN_MEM pplmn_mem; | |
227 UBYTE plmn_name[SIZE_PLMN_NAME]; /* textual network name */ | |
228 UBYTE network_name[SIZE_NETWORK_NAME]; /* numeric network name */ | |
229 USHORT status; /* current status */ | |
230 UBYTE roaming_indicator; /* Roaming Indicator */ | |
231 ListMenuData * network_list; /* PLMN available List */ | |
232 UBYTE network_list_status;/* Network List Status */ | |
233 UBYTE network_search_name[MAX_PLMN][6]; /* numeric network name */ | |
234 T_MFW_HND network_search_win; | |
235 UBYTE Listposition; | |
236 } T_network; | |
237 | |
238 T_network network_data; | |
239 | |
240 typedef struct | |
241 { | |
242 T_MMI_CONTROL mmi_control; | |
243 T_MFW_HND win; | |
244 SHORT id; | |
245 T_MFW_HND parent; | |
246 T_MFW_HND kbd; | |
247 T_MFW_HND kbd_long; | |
248 T_MFW_HND menu; | |
249 T_MFW_HND dialog_win; | |
250 ListMenuData *network_list; | |
251 /*SPR 2635, replace pplmn data structure pointer with pointer to array of strings*/ | |
252 char** pplmn_longnames; | |
253 CHAR buffer[6]; | |
254 #ifdef NEW_EDITOR | |
255 T_AUI_EDITOR_DATA editor_info; /* SPR#1428 - SH - New Editor data */ | |
256 #else | |
257 T_EDITOR_DATA editor_info; /* storage for editor attributes */ | |
258 #endif | |
259 } T_network_OPT; | |
260 | |
261 | |
262 typedef enum | |
263 { | |
264 E_INIT, | |
265 E_BACK, | |
266 E_RETURN, | |
267 E_ABORT, | |
268 E_EXIT | |
269 } e_lists_events; | |
270 | |
271 // Apr 14, 2004 REF: CRR 12641 xpradipg | |
272 static BOOLEAN Auto_Network_Select=false; | |
273 extern T_MFW_HND gPhbkMenu;// Jul 21, 2004 REF: CRR 13348 xvilliva | |
274 // Sep 23, 2004 REF: CRR 24562 xvilliva | |
275 extern int g_ensErr; | |
276 | |
277 //x0pleela 10 Feb, 2006 ER: OMAPS00065203 | |
278 EXTERN UBYTE gEons_alloc_active; /* EONS allocation and activation */ | |
279 | |
280 /* | |
281 * Local prototypes | |
282 */ | |
283 static int network_win_cb (T_MFW_EVENT event, T_MFW_WIN * win); | |
284 static int network_nm_cb (T_MFW_EVENT event, T_MFW_HND para); | |
285 static void network_remove_network_log (void); | |
286 static UBYTE network_log_enabled (void); | |
287 static void network_list_cb (T_MFW_HND win, ListMenuData * ListData); | |
288 static void network_pref_list_cb (T_MFW_HND win, ListMenuData * ListData); | |
289 static ListMenuData * network_create_list (T_network * data, T_MFW_PLMN_LIST * plmn_list); | |
290 static ListMenuData * network_create_pref_list (T_network * data); | |
291 static ListMenuData * network_create_mobile_list (T_network_OPT * data); | |
292 static void network_start_animation_plmn_selection (int plmn_value); | |
293 static void network_start_animation (void); | |
294 static void network_stop_animation (void); | |
295 static void network_selected (void); | |
296 static void network_forbidden_plmn (void); | |
297 static void network_no_plmns (void); | |
298 void network_animation_cb (T_MFW_HND win, UBYTE identifier, UBYTE reason); | |
299 //Jul 21, 2004 REF: CRR 13348 xvilliva | |
300 //We use a seperate callback for "Network Selected". | |
301 void network_select_animation_cb (T_MFW_HND win, UBYTE identifier, UBYTE reason); | |
302 T_MFW_HND network_MNU_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr); | |
303 static T_MFW_HND network_MNU_create(MfwHnd parent_window); | |
304 static void network_MNU_destroy(MfwHnd own_window); | |
305 void network_MNU_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter); | |
306 static int network_MNU_mnu_cb (MfwEvt e, MfwMnu *m); | |
307 static int network_MNU_win_cb (MfwEvt e, MfwWin *w); | |
308 static int network_MNU_kbd_cb (MfwEvt e, MfwKbd *k); | |
309 static int network_request_plnm_list (MfwMnu* m, MfwMnuItem* i); | |
310 void network_delete_pref_plnm (T_MFW_HND win , USHORT identifier, UBYTE reason); | |
311 void network_info_screen (T_MFW_HND win, USHORT MessageId, T_VOID_FUNC funt_ptr );// xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
312 static int network_delete(MfwMnu* m, MfwMnuItem* i); | |
313 T_MFW_HND network_EDT_start (MfwMnu* m, MfwMnuItem* i); | |
314 static T_MFW_HND network_EDT_create (T_MFW_HND parent); | |
315 static void network_EDT_destroy (T_MFW_HND window); | |
316 static void network_EDT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter); | |
317 static void network_EDT_editor_cb (T_MFW_HND win, USHORT Identifier, USHORT event); | |
318 /* SPR#2354 - SH -Added two new callbacks */ | |
319 static void network_request_plmn_list_cb(T_MFW_HND win, USHORT identifier, UBYTE reason); | |
320 void network_mobile_list_changed_cb(T_MFW_HND win , USHORT identifier, UBYTE reason); | |
321 | |
322 | |
323 /* | |
324 * Local Definitions | |
325 */ | |
326 #define NETWORK_LIMITED_SERVICE 420 | |
327 #define NETWORK_NO_NETWORK 421 | |
328 #define NETWORK_PLMN_LIST 422 | |
329 #define NETWORK_PREFERRED_LIST 423 | |
330 #define NETWORK_PPLMN_MEM_LIST 424 | |
331 /* SPR759 - SH - Cell reselection */ | |
332 #define NETWORK_CELL_SELECT 425 | |
333 | |
334 #define NETWORK_LIST_DISPLAY 430 | |
335 #define NETWORK_LIST_SELECT_PLMN 432 | |
336 | |
337 #ifdef NEPTUNE_BOARD | |
338 /* List destory not done - added - OMAPS00061049 - 08-03-2006 */ | |
339 #define NETWORK_LIST_DESTORY 440 | |
340 #endif | |
341 | |
342 /* | |
343 * Local Network List Status | |
344 */ | |
345 #define NETWORK_LIST_DISPLAY_FIRST 1 | |
346 #define NETWORK_LIST_SELECTED 2 | |
347 #define NETWORK_LIST_REGISTRATION 3 | |
348 #define NETWORK_PREF_LIST_SELECTED 4 | |
349 #define NETWORK_MENU_ITEM 2 | |
350 | |
351 //nm 5.3.01 this number will be change | |
352 #define MAX_SHOW_OF_PLMN 99 | |
353 | |
354 static MfwMnuItem network_OPTItems [] = | |
355 { | |
356 {0,0,0,(char *)TxtSelectFromList, 0, (MenuFunc)network_request_plnm_list, item_flag_none}, | |
357 {0,0,0,(char *)TxtEnterNetworkCode, 0, (MenuFunc)network_EDT_start, item_flag_none}, | |
358 {0,0,0,(char *)TxtDelete, 0, (MenuFunc)network_delete, item_flag_none} | |
359 }; | |
360 | |
361 static MfwMnuAttr network_OPTAttrib = | |
362 { | |
363 &network_menuArea, | |
364 MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ | |
365 -1, /* use default font */ | |
366 network_OPTItems, /* with these items */ | |
367 sizeof(network_OPTItems)/sizeof(MfwMnuItem), /* number of items */ | |
368 COLOUR_LIST_NETWORK, TxtNull, NULL, MNUATTRSPARE | |
369 | |
370 | |
371 }; | |
372 | |
373 | |
374 | |
375 static MfwMnuAttr network_menuAttrib = | |
376 { | |
377 &network_menuArea, | |
378 MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ | |
379 -1, /* use default font */ | |
380 NULL, /* with these items */ | |
381 0, /* number of items */ | |
382 COLOUR_LIST_NETWORK, TxtNull, NULL, MNUATTRSPARE | |
383 | |
384 }; | |
385 | |
386 | |
387 /******************************************************************************* | |
388 | |
389 $Function: networkInit | |
390 | |
391 $Description: | |
392 | |
393 $Returns: | |
394 | |
395 $Arguments: | |
396 | |
397 *******************************************************************************/ | |
398 T_MFW_HND networkInit (T_MFW_HND parent_window) | |
399 { | |
400 return (network_create (parent_window)); | |
401 } | |
402 | |
403 | |
404 /******************************************************************************* | |
405 | |
406 $Function: networkExit | |
407 | |
408 $Description: exit network handling (Backward Compatibility interface) | |
409 | |
410 $Returns: | |
411 | |
412 $Arguments: | |
413 *********************************************************************/ | |
414 | |
415 | |
416 void networkExit (void) | |
417 { | |
418 network_destroy (network_data.network_win); | |
419 } | |
420 | |
421 /********************************************************************* | |
422 * | |
423 * Network Dialog | |
424 * | |
425 * Window - Structure | |
426 * | |
427 * network --> network_list | |
428 * --> network_search_animation | |
429 * | |
430 *********************************************************************/ | |
431 | |
432 /******************************************************************************* | |
433 | |
434 $Function: network_create | |
435 | |
436 $Description: create network top window | |
437 | |
438 $Returns: | |
439 | |
440 $Arguments: | |
441 | |
442 *******************************************************************************/ | |
443 T_MFW_HND network_create (T_MFW_HND parent_window) | |
444 { | |
445 T_network * data = &network_data; | |
446 T_MFW_WIN * win; | |
447 | |
448 TRACE_FUNCTION ("network_create()"); | |
449 | |
450 data->network_win = win_create (parent_window, 0, 0, (T_MFW_CB)network_win_cb); | |
451 | |
452 if (data->network_win EQ 0) | |
453 return 0; | |
454 | |
455 /* | |
456 * Create window handler | |
457 */ | |
458 data->mmi_control.dialog = (T_DIALOG_FUNC)network; | |
459 data->mmi_control.data = data; | |
460 win = ((T_MFW_HDR *)data->network_win)->data; | |
461 win->user = (void *) data; | |
462 | |
463 /* | |
464 * Initialise MFW | |
465 */ | |
466 nm_init (); | |
467 | |
468 /* | |
469 * Create any other handler | |
470 */ | |
471 data->nm_handle = nm_create (data->network_win, E_NM_ALL_SERVICES, (T_MFW_CB)network_nm_cb); | |
472 | |
473 memset (data->plmn_name, 0, SIZE_PLMN_NAME); | |
474 memset (data->network_name, 0, SIZE_NETWORK_NAME); | |
475 | |
476 data->aborted = FALSE; | |
477 data->keep_plmn_list = FALSE; | |
478 data->forbidden = FALSE; | |
479 | |
480 data->status = NETWORK_NO_SERVICE; | |
481 data->network_list = NULL; | |
482 data->network_search_win = 0; | |
483 data->Listposition = 0; | |
484 | |
485 | |
486 | |
487 winShow(data->network_win); | |
488 /* | |
489 * return window handle | |
490 */ | |
491 return data->network_win; | |
492 } | |
493 | |
494 /******************************************************************************* | |
495 | |
496 $Function: network_destroy | |
497 | |
498 $Description: destroy network top window | |
499 | |
500 $Returns: | |
501 | |
502 $Arguments: | |
503 | |
504 *******************************************************************************/ | |
505 void network_destroy (T_MFW_HND own_window) | |
506 { | |
507 T_MFW_WIN * win; | |
508 T_network * data; | |
509 | |
510 TRACE_FUNCTION ("network_destroy()"); | |
511 | |
512 if (own_window) | |
513 { | |
514 win = ((T_MFW_HDR *)own_window)->data; | |
515 data = (T_network *)win->user; | |
516 | |
517 if (data) | |
518 { | |
519 /* | |
520 * Exit NM and delete NM handler | |
521 */ | |
522 nm_exit (); | |
523 nm_delete (data->nm_handle); | |
524 | |
525 /* | |
526 * Delete WIN handler | |
527 */ | |
528 win_delete (data->network_win); | |
529 } | |
530 } | |
531 } | |
532 | |
533 /******************************************************************************* | |
534 | |
535 $Function: network | |
536 | |
537 $Description: network top window dialog function | |
538 | |
539 $Returns: | |
540 | |
541 $Arguments: | |
542 | |
543 *******************************************************************************/ | |
544 void network (T_MFW_HND win, USHORT event, SHORT value, void * parameter) | |
545 { | |
546 T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; | |
547 T_network * data = (T_network *)win_data->user; | |
548 T_MFW_NETWORK_STRUCT * plmn_ident; | |
549 | |
550 TRACE_FUNCTION(">>> network()"); | |
551 | |
552 | |
553 switch (event) | |
554 { | |
555 case NETWORK_NO_SERVICE: | |
556 case NETWORK_LIMITED_SERVICE: | |
557 TRACE_EVENT ("NETWORK NO/LIMITED SERVICE"); | |
558 /* | |
559 * Set Status | |
560 */ | |
561 data->status = NETWORK_NO_SERVICE; | |
562 | |
563 /* | |
564 * Check if network log is enabled | |
565 */ | |
566 if (network_log_enabled ()) | |
567 { | |
568 SEND_EVENT (idle_get_window(), NETWORK_NO_PLMN_XXX_AVAIL, 0, 0); | |
569 } | |
570 else | |
571 { | |
572 SEND_EVENT (idle_get_window(), NETWORK_NO_SERVICE, 0, 0); | |
573 if (data->network_list NEQ NULL) | |
574 { | |
575 switch (data->network_list_status) | |
576 { | |
577 case NETWORK_LIST_REGISTRATION: | |
578 TRACE_EVENT ("NETWORK_LIST_REGISTRATION"); | |
579 /* | |
580 * Present list of available PLMNs again | |
581 * | |
582 * Start the available plmn search | |
583 */ | |
584 nm_avail_plmn_list(); | |
585 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
586 //After retrieving the list we see if an error occured | |
587 //and flash an alert to the user accordingly. | |
588 if(g_ensErr == 1) | |
589 { | |
590 g_ensErr = 0; | |
591 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
592 } | |
593 | |
594 /* | |
595 * remove network log if needed | |
596 */ | |
597 network_remove_network_log (); | |
598 | |
599 network_data.forbidden = TRUE; | |
600 break; | |
601 | |
602 case NETWORK_LIST_SELECTED: | |
603 TRACE_EVENT ("NETWORK_LIST_SELECTED"); | |
604 /* | |
605 * After registration start, MFW returns the current status | |
606 */ | |
607 data->network_list_status= NETWORK_LIST_REGISTRATION; | |
608 data->keep_plmn_list = TRUE; | |
609 break; | |
610 } | |
611 } | |
612 } | |
613 #ifdef MMI_HOMEZONE_ENABLED | |
614 /* sh - tell homezone there is no network */ | |
615 //Jun 14, 2005 REF: MMI-FIX-30439 x0018858 | |
616 //Modified to incorporate the third argument. | |
617 homezoneUpdate(0,0,0); | |
618 #endif | |
619 break; | |
620 | |
621 case NETWORK_SEARCH_NETWORK: | |
622 TRACE_EVENT ("NETWORK SEARCH NETWORK"); | |
623 SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 0, 0); | |
624 break; | |
625 | |
626 case NETWORK_FULL_SERVICE: | |
627 TRACE_EVENT("NETWORK_FULL_SERVICE"); | |
628 /* | |
629 * Set Status | |
630 */ | |
631 data->status = NETWORK_FULL_SERVICE; | |
632 | |
633 /* | |
634 * Copy Network Name in textual and numerical format | |
635 * | |
636 * NOTE: Service Provider Name is not used | |
637 * Operator Name from SIM needs CPHS support by MFW | |
638 */ | |
639 plmn_ident = (T_MFW_NETWORK_STRUCT *)parameter; | |
640 | |
641 //x0pleela 15 Feb, 2006 ER: OMAPs00065203 | |
642 //Removed the global variable gOper_sel_done and have introduced 2 functions which will | |
643 //set and get the status of the operator selection | |
644 | |
645 //x0pleela 9 Feb, 2006 ER:OMAPS00065203 | |
646 //Check if EONS is allocated and activated. If not, and if operator name is not yet obtained from other sources | |
647 //get operator name from other sources | |
648 if((!gEons_alloc_active ) AND(!get_opn_sel_done()) ) | |
649 { | |
650 //get operator name from other sources CPHS or NITZ or ROM | |
651 nm_get_opername(plmn_ident); | |
652 } | |
653 set_opn_sel_done(FALSE); | |
654 | |
655 #ifdef NO_ASCIIZ | |
656 memcpy (data->plmn_name, &plmn_ident->network_long.data, SIZE_PLMN_NAME); | |
657 #else | |
658 memcpy (data->plmn_name, plmn_ident->network_long, SIZE_PLMN_NAME); | |
659 #endif | |
660 memcpy (data->network_name, plmn_ident->network_numeric, SIZE_NETWORK_NAME); | |
661 | |
662 /* | |
663 * If network name is not known use numeric representation as default. | |
664 */ | |
665 #ifdef NO_ASCIIZ | |
666 if (plmn_ident->network_long.len EQ 0) | |
667 #else | |
668 if (strlen ((char *)(plmn_ident->network_long)) EQ 0) | |
669 #endif | |
670 strcpy ((char *)data->plmn_name, (char *)data->network_name); | |
671 | |
672 /* | |
673 * Store Roaming Indicator | |
674 */ | |
675 data->roaming_indicator = plmn_ident->roaming_indicator; | |
676 | |
677 network_stop_animation (); | |
678 /* | |
679 * Inform Idle screen | |
680 */ | |
681 SEND_EVENT (idle_get_window(), NETWORK_FULL_SERVICE, 0, 0); | |
682 | |
683 /* | |
684 * If network list is available | |
685 */ | |
686 if (data->network_list NEQ NULL) | |
687 { | |
688 switch (data->network_list_status) | |
689 { | |
690 case NETWORK_LIST_REGISTRATION: | |
691 if(data->keep_plmn_list EQ FALSE) | |
692 { | |
693 TRACE_EVENT("NETWORK_LIST_REGISTRATION No 1"); | |
694 | |
695 #ifdef FF_2TO1_PS | |
696 #ifndef NEPTUNE_BOARD | |
697 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
698 MMREG_MAX_PLMN_ID * sizeof (T_MFW_MNU_ITEM)); | |
699 #else | |
700 /* Free the allocated memory for PLMN list window - | |
701 OMAPS00061049 - 08-03-2006 */ | |
702 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
703 Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
704 #endif | |
705 | |
706 #else | |
707 | |
708 #ifndef NEPTUNE_BOARD | |
709 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
710 MAX_PLMN_ID * sizeof (T_MFW_MNU_ITEM)); | |
711 #else | |
712 /* Free the allocated memory for PLMN list window - | |
713 OMAPS00061049 - 08-03-2006 */ | |
714 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
715 Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
716 #endif | |
717 | |
718 #endif | |
719 FREE_MEMORY ((UBYTE *)data->network_list, sizeof (ListMenuData)); | |
720 data->network_list = NULL; | |
721 } | |
722 data->keep_plmn_list = FALSE; | |
723 break; | |
724 case NETWORK_LIST_SELECTED: | |
725 /* | |
726 * After registration start, MFW returns the current status | |
727 */ | |
728 TRACE_EVENT("NETWORK_LIST_SELECTED"); | |
729 data->network_list_status= NETWORK_LIST_REGISTRATION; | |
730 /* Commented out and moved | |
731 network_selected(); */ | |
732 break; | |
733 } | |
734 // API - Moved from previous position | |
735 network_selected(); | |
736 } | |
737 | |
738 // Apr 14, 2004 REF: CRR 12641 xpradipg | |
739 if(Auto_Network_Select==true) | |
740 { | |
741 network_selected(); | |
742 Auto_Network_Select=false; | |
743 } | |
744 | |
745 break; | |
746 | |
747 case NETWORK_NO_NETWORK: | |
748 TRACE_EVENT ("NETWORK NO NETWORK"); | |
749 /* | |
750 * No PLMN found after search for available PLMNs | |
751 */ | |
752 network_stop_animation (); | |
753 if (network_log_enabled ()) | |
754 { | |
755 data->status = NETWORK_NO_SERVICE; | |
756 SEND_EVENT (idle_get_window(), NETWORK_NO_PLMN_XXX_AVAIL, 0, 0); | |
757 } | |
758 else | |
759 { | |
760 /* | |
761 * No Networks found. | |
762 */ | |
763 data->status = NETWORK_NO_SERVICE; | |
764 SEND_EVENT (idle_get_window(), NETWORK_NO_SERVICE, 0, 0); | |
765 } | |
766 #ifdef MMI_HOMEZONE_ENABLED | |
767 /* sh - tell homezone there is no network */ | |
768 //Jun 14, 2005 REF: MMI-FIX-30439 x0018858 | |
769 //Modified to incorporate the third argument. | |
770 homezoneUpdate(0,0,0); | |
771 #endif | |
772 break; | |
773 | |
774 case NETWORK_PLMN_LIST: | |
775 TRACE_EVENT ("NETWORK PLMN LIST"); | |
776 TRACE_EVENT (">>NETWORK PLMN LIST"); | |
777 /* | |
778 * PLMN list found | |
779 */ | |
780 if (network_data.aborted != TRUE) | |
781 { | |
782 if (network_log_enabled ()) | |
783 { | |
784 data->status = NETWORK_NO_SERVICE; | |
785 SEND_EVENT (idle_get_window(), NETWORK_NO_PLMN_XXX_AVAIL, 0, 0); | |
786 } | |
787 else | |
788 { | |
789 T_MFW_PLMN_LIST * plmn_list; | |
790 /* | |
791 * Networks founds. | |
792 */ | |
793 data->status = NETWORK_NO_SERVICE; | |
794 /* | |
795 * If network list is available, destroy | |
796 */ | |
797 if (data->network_list NEQ NULL) | |
798 { | |
799 | |
800 #ifdef FF_2TO1_PS | |
801 #ifndef NEPTUNE_BOARD | |
802 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
803 MMREG_MAX_PLMN_ID * sizeof (T_MFW_MNU_ITEM)); | |
804 #else | |
805 /* Free the allocated memory for PLMN list window - | |
806 OMAPS00061049 - 08-03-2006 */ | |
807 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
808 Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
809 #endif | |
810 | |
811 #else | |
812 #ifndef NEPTUNE_BOARD | |
813 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
814 MAX_PLMN_ID * sizeof (T_MFW_MNU_ITEM)); | |
815 #else | |
816 /* Free the allocated memory for PLMN list window - | |
817 OMAPS00061049 - 08-03-2006 */ | |
818 FREE_MEMORY ((UBYTE *)data->network_list->List, | |
819 Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
820 #endif | |
821 | |
822 #endif | |
823 | |
824 FREE_MEMORY ((UBYTE *)data->network_list, sizeof (ListMenuData)); | |
825 data->network_list = NULL; | |
826 } | |
827 | |
828 /* | |
829 * If list is empty, show info screen | |
830 */ | |
831 plmn_list = (T_MFW_PLMN_LIST *)parameter; | |
832 | |
833 #ifdef NEPTUNE_BOARD | |
834 /* Count assigned to global static variable - OMAPS00061049 - 08-03-2006 */ | |
835 Plmn_list_count = plmn_list->count; | |
836 #endif | |
837 | |
838 if (plmn_list->count EQ 0) | |
839 { | |
840 network_stop_animation (); | |
841 network_no_plmns (); | |
842 } | |
843 else | |
844 { | |
845 /* | |
846 * Create and present list of available PLMNs | |
847 * | |
848 */ | |
849 | |
850 /* Pass the plmn_list which already hold the parameter data - OMAPS00061049 - 08-03-2006 */ | |
851 #ifndef NEPTUNE_BOARD | |
852 data->network_list = network_create_list (data, parameter); | |
853 #else | |
854 data->network_list = network_create_list (data, plmn_list ); | |
855 #endif | |
856 data->network_list_status = NETWORK_LIST_DISPLAY_FIRST; | |
857 network_stop_animation (); | |
858 listDisplayListMenu (win, data->network_list, (ListCbFunc)network_list_cb,0); | |
859 | |
860 // change by Sasken ( Pradeep/Vadiraj) on Apr 07th 2004 | |
861 // Issue Number : SPR#12654 on 07/04/04 by Pradeep/Vadiraj | |
862 // Bug : Pressing "search" button does not trigger anything | |
863 // Solution: When the ME is already camped on to a network the NoNetwork event is not sent. | |
864 // Commented the following line | |
865 // SEND_EVENT (idle_get_window(), NETWORK_NO_SERVICE, 0, 0); | |
866 | |
867 if (network_data.forbidden == TRUE) | |
868 { | |
869 network_forbidden_plmn(); | |
870 network_data.forbidden = FALSE; | |
871 } | |
872 } | |
873 } | |
874 } | |
875 else | |
876 { | |
877 network_data.aborted = FALSE; | |
878 } | |
879 #ifdef MMI_HOMEZONE_ENABLED | |
880 /* sh - tell homezone there is no network */ | |
881 //Jun 14, 2005 REF: MMI-FIX-30439 x0018858 | |
882 //Modified to incorporate the third argument. | |
883 homezoneUpdate(0,0,0); | |
884 #endif | |
885 break; | |
886 | |
887 case NETWORK_LIST_SELECT_PLMN: | |
888 TRACE_EVENT ("NETWORK LIST_SELECT"); | |
889 TRACE_EVENT (">> NETWORK LIST_SELECT"); | |
890 /* | |
891 * A network has been selected from the PLMN available list | |
892 * Start manual registration and start Search animation. | |
893 */ | |
894 network_start_animation_plmn_selection (value); | |
895 data->network_list_status = NETWORK_LIST_SELECTED; | |
896 nm_select_plmn ((U8 *)network_data.network_search_name[value]); | |
897 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
898 //After retrieving the list we see if an error occured | |
899 //and flash an alert to the user accordingly. | |
900 if(g_ensErr == 1) | |
901 { | |
902 g_ensErr = 0; | |
903 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
904 } | |
905 break; | |
906 case NETWORK_PPLMN_MEM_LIST: | |
907 { | |
908 T_MFW_PPLMN_MEM *pplmn_mem; | |
909 UBYTE i; | |
910 | |
911 TRACE_EVENT (">> NETWORK PPLMN MEM LIST"); | |
912 /* Save the number of PLMN records: | |
913 * maxRcd = maximum preferred PLMN records on the SIM card | |
914 * usedRcd = used preferred PLMN records on the SIM card | |
915 */ | |
916 pplmn_mem = (T_MFW_PPLMN_MEM *)parameter; | |
917 | |
918 network_data.pplmn_mem.maxRcd = pplmn_mem->maxRcd; | |
919 network_data.pplmn_mem.usedRcd = pplmn_mem->usedRcd; | |
920 | |
921 /* | |
922 * Request preferred PLMN list from the SIM | |
923 */ | |
924 | |
925 | |
926 network_data.pplmn = (T_MFW_NETWORK_STRUCT *)ALLOC_MEMORY ((pplmn_mem->maxRcd) * sizeof (T_MFW_NETWORK_STRUCT)); | |
927 | |
928 if (network_data.pplmn EQ 0) | |
929 { | |
930 return; | |
931 } | |
932 | |
933 if (pplmn_mem->usedRcd > 0) | |
934 { | |
935 // request MFW to fill up the pref. PLMN list | |
936 nm_pref_plmn_list(network_data.pplmn, pplmn_mem->maxRcd, 1); | |
937 } | |
938 else | |
939 { | |
940 // doesnt make sense to request the MFW to fill up the list | |
941 // when the "pplmn_mem->usedRcd" is 0 | |
942 | |
943 TRACE_EVENT(">> NETWORK PPLMN MEM LIST - ELSE Loop"); | |
944 for (i=0; i < (network_data.pplmn_mem.maxRcd); i++) | |
945 { | |
946 #ifdef NO_ASCIIZ | |
947 network_data.pplmn[i].network_long.len = 0; | |
948 network_data.pplmn[i].network_short.len = 0; | |
949 #else | |
950 memset(network_data.pplmn[i].network_long, '\0', LONG_NAME); | |
951 memset(network_data.pplmn[i].network_short, '\0', SHORT_NAME); | |
952 #endif | |
953 memset(network_data.pplmn[i].network_numeric, '\0', NUMERIC_LENGTH); | |
954 } | |
955 | |
956 data->network_list = network_create_pref_list (data); | |
957 listDisplayListMenu (win, data->network_list,(ListCbFunc)network_pref_list_cb,0); | |
958 } | |
959 | |
960 } | |
961 break; | |
962 | |
963 case NETWORK_PREFERRED_LIST: | |
964 { | |
965 | |
966 /* UBYTE i; */ /* Warning Correction */ | |
967 | |
968 | |
969 TRACE_EVENT (">>NETWORK PREFERRED LIST"); | |
970 /* | |
971 * Create and present the preferred list of PLMNs | |
972 * | |
973 */ | |
974 | |
975 //nm network_stop_animation (); | |
976 | |
977 | |
978 data->network_list = network_create_pref_list (data); | |
979 | |
980 /* cq12719 Check if prefered list info resource has been created.16-03-04 MZ */ | |
981 if(data->network_list != NULL) | |
982 listDisplayListMenu (win, data->network_list,(ListCbFunc)network_pref_list_cb,0); | |
983 } | |
984 break; | |
985 | |
986 case NETWORK_CELL_SELECT: | |
987 { | |
988 /* If Homezone is active, inform it of the new cell data */ | |
989 T_MFW_CELL_STRUCT *cell_data; | |
990 | |
991 TRACE_EVENT(">>NETWORK CELL SELECT"); | |
992 | |
993 cell_data = (T_MFW_CELL_STRUCT *)parameter; | |
994 | |
995 #ifdef MMI_HOMEZONE_ENABLED | |
996 /* SPR759 - SH - send cell reselection info to homezone */ | |
997 | |
998 //Jun 14, 2005 REF: MMI-FIX-30439 x0018858 | |
999 //Modified to incorporate the third argument. | |
1000 homezoneUpdate(cell_data->lid, cell_data->ci, 0); | |
1001 #endif | |
1002 break; | |
1003 #ifdef NEPTUNE_BOARD | |
1004 /* Destory the list when select softkey is pressed / back softkey is pressed */ | |
1005 /* OMAPS00061049 - 08-03-2006 - BEGIN*/ | |
1006 case NETWORK_LIST_DESTORY: | |
1007 TRACE_EVENT ("Inside NETWORK_LIST_DESTORY Event"); | |
1008 | |
1009 /* Destory the list window */ | |
1010 listsDestroy(data->network_list->win); | |
1011 | |
1012 TRACE_EVENT ("Destoryed list window successfully"); | |
1013 | |
1014 /* | |
1015 * If network list is available, destroy | |
1016 */ | |
1017 if (data->network_list NEQ NULL) | |
1018 { | |
1019 | |
1020 #ifdef FF_2TO1_PS | |
1021 /* Free the allocated memory for PLMN list window - OMAPS00061049 - 08-03-2006 */ | |
1022 FREE_MEMORY ((UBYTE *)data->network_list->List, Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
1023 #else | |
1024 /* Free the allocated memory for PLMN list window - OMAPS00061049 - 08-03-2006 */ | |
1025 FREE_MEMORY ((UBYTE *)data->network_list->List, Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
1026 #endif | |
1027 | |
1028 FREE_MEMORY ((UBYTE *)data->network_list, sizeof (ListMenuData)); | |
1029 data->network_list = NULL; | |
1030 } | |
1031 | |
1032 TRACE_EVENT ("List window memory freed"); | |
1033 break; | |
1034 /* OMAPS00061049 - 08-03-2006 - END */ | |
1035 #endif | |
1036 | |
1037 | |
1038 } | |
1039 } | |
1040 } | |
1041 | |
1042 /******************************************************************************* | |
1043 | |
1044 $Function: network_win_cb | |
1045 | |
1046 $Description: network top window | |
1047 | |
1048 $Returns: | |
1049 | |
1050 $Arguments: | |
1051 | |
1052 *******************************************************************************/ | |
1053 static int network_win_cb (T_MFW_EVENT event, T_MFW_WIN * win) | |
1054 { | |
1055 /* | |
1056 * Top Window has no output | |
1057 */ | |
1058 return 1; | |
1059 } | |
1060 | |
1061 | |
1062 /******************************************************************************* | |
1063 | |
1064 $Function: network_nm_cb | |
1065 | |
1066 $Description: network handler (mfw callback handler) | |
1067 | |
1068 $Returns: | |
1069 | |
1070 $Arguments: | |
1071 | |
1072 *******************************************************************************/ | |
1073 static int network_nm_cb (T_MFW_EVENT event, T_MFW_HND para) | |
1074 { | |
1075 TRACE_FUNCTION("network_nm_cb"); | |
1076 | |
1077 switch(event) | |
1078 { | |
1079 case E_NM_FULL_SERVICE: | |
1080 //x0pleela 9 Feb, 2006 ER:OMAPS00065203 | |
1081 //Handling E_NM_OPN for operator name display | |
1082 case E_NM_OPN: | |
1083 SEND_EVENT (network_data.network_win, NETWORK_FULL_SERVICE, 0, para); | |
1084 break; | |
1085 | |
1086 case E_NM_LIMITED_SERVICE: | |
1087 SEND_EVENT (network_data.network_win, NETWORK_LIMITED_SERVICE, 0, para); | |
1088 break; | |
1089 | |
1090 case E_NM_NO_SERVICE: | |
1091 SEND_EVENT (network_data.network_win, NETWORK_NO_SERVICE, 0, para); | |
1092 break; | |
1093 | |
1094 case E_NM_SEARCH_NETWORK: | |
1095 SEND_EVENT (network_data.network_win, NETWORK_SEARCH_NETWORK, 0, para); | |
1096 break; | |
1097 | |
1098 case E_NM_NO_NETWORK: | |
1099 SEND_EVENT (network_data.network_win, NETWORK_NO_NETWORK, 0, para); | |
1100 break; | |
1101 | |
1102 case E_NM_PLMN_LIST: | |
1103 SEND_EVENT (network_data.network_win, NETWORK_PLMN_LIST, 0, para); | |
1104 break; | |
1105 | |
1106 case E_NM_DEREGISTRATION: | |
1107 TRACE_EVENT("MmiNetwork:E_NM_DEREGISTRATION"); | |
1108 mainShutdown(); | |
1109 break; | |
1110 case E_NM_PREF_PLMN_LIST: | |
1111 TRACE_EVENT("MmiNetwork:E_NM_PREF_PLMN_LIST"); | |
1112 SEND_EVENT (network_data.network_win, NETWORK_PREFERRED_LIST, 0, para); | |
1113 break; | |
1114 case E_NM_PPLMN_MEM: | |
1115 TRACE_EVENT("MmiNetwork:E_NM_PPLMN_MEM"); | |
1116 SEND_EVENT (network_data.network_win, NETWORK_PPLMN_MEM_LIST, 0, para); | |
1117 break; | |
1118 /* SH 29-04-02 - Cell reselection */ | |
1119 case E_NM_CELL_SELECT: | |
1120 TRACE_EVENT("MmiNetwork:E_NM_CELL_SELECT"); | |
1121 SEND_EVENT (network_data.network_win, NETWORK_CELL_SELECT, 0, para); | |
1122 break; | |
1123 /* SPR919 - SH - Band selection */ | |
1124 case E_NM_BAND: | |
1125 TRACE_EVENT("MmiNetwork:E_NM_BAND"); | |
1126 nm_registration (nm_get_mode (),0, 0); | |
1127 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
1128 //After retrieving the list we see if an error occured | |
1129 //and flash an alert to the user accordingly. | |
1130 if(g_ensErr == 1) | |
1131 { | |
1132 g_ensErr = 0; | |
1133 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
1134 } | |
1135 break; | |
1136 | |
1137 default: | |
1138 return 0; | |
1139 } | |
1140 return 1; | |
1141 } | |
1142 | |
1143 /******************************************************************************* | |
1144 | |
1145 $Function: nm_flag_log_off | |
1146 | |
1147 $Description: Attribut function for menu entries. | |
1148 It defines whether the network log off function shall | |
1149 be displayed or not. | |
1150 | |
1151 $Returns: | |
1152 | |
1153 $Arguments: | |
1154 | |
1155 *******************************************************************************/ | |
1156 USHORT nm_flag_log_off (T_MFW_MNU * m, T_MFW_MNU_ATTR * ma, T_MFW_MNU_ITEM * mi) | |
1157 { | |
1158 if (FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED) | |
1159 return 0; | |
1160 | |
1161 return MNU_ITEM_HIDE; | |
1162 } | |
1163 /******************************************************************************* | |
1164 | |
1165 $Function: nm_flag_log_off | |
1166 | |
1167 $Description: Attribut function for menu entries. | |
1168 It defines whether the network log off function shall | |
1169 be displayed or not. | |
1170 | |
1171 $Returns: | |
1172 | |
1173 $Arguments: | |
1174 | |
1175 *******************************************************************************/ | |
1176 USHORT nm_flag_log_on (T_MFW_MNU * m, T_MFW_MNU_ATTR * ma, T_MFW_MNU_ITEM * mi) | |
1177 { | |
1178 if (FFS_flashData.network_name == NULL) | |
1179 { | |
1180 return MNU_ITEM_HIDE; | |
1181 } | |
1182 if (FFS_flashData.net_log_status EQ NM_LOG_AVAIL_NOT_USED) | |
1183 return 0; | |
1184 | |
1185 return MNU_ITEM_HIDE; | |
1186 } | |
1187 | |
1188 /******************************************************************************* | |
1189 | |
1190 $Function: network_set_mode_auto | |
1191 | |
1192 $Description: Start a automatic registration | |
1193 | |
1194 $Returns: | |
1195 | |
1196 $Arguments: | |
1197 | |
1198 *******************************************************************************/ | |
1199 int network_set_mode_auto(T_MFW_MNU *m, T_MFW_MNU_ITEM *i) | |
1200 { | |
1201 TRACE_FUNCTION ("network_set_mode_auto()"); | |
1202 | |
1203 /* | |
1204 * Save the automatic mode in PCM for next power on | |
1205 */ | |
1206 nm_set_mode(NM_AUTOMATIC); | |
1207 | |
1208 /* | |
1209 * Start the registration of full service | |
1210 */ | |
1211 nm_registration (NM_AUTOMATIC,0, FALSE); | |
1212 | |
1213 /* | |
1214 * remove network log if needed | |
1215 */ | |
1216 network_remove_network_log (); | |
1217 | |
1218 /* | |
1219 * Remove Main Menu | |
1220 */ | |
1221 //JVJEmenuExit(); | |
1222 | |
1223 network_start_animation (); | |
1224 // Apr 14, 2004 REF: CRR 12641 xpradipg | |
1225 Auto_Network_Select=true; | |
1226 return 1; | |
1227 } | |
1228 /******************************************************************************* | |
1229 | |
1230 $Function: network_set_mode_man | |
1231 | |
1232 $Description: Start a manual registration | |
1233 | |
1234 $Returns: | |
1235 | |
1236 $Arguments: | |
1237 | |
1238 *******************************************************************************/ | |
1239 int network_set_mode_man(T_MFW_MNU *m, T_MFW_MNU_ITEM *i) | |
1240 { | |
1241 TRACE_FUNCTION ("network_set_mode_man()"); | |
1242 | |
1243 /* | |
1244 * Save the automatic mode in PCM for next power on | |
1245 */ | |
1246 nm_set_mode(NM_MANUAL); | |
1247 | |
1248 /* | |
1249 * Start the available plmn search | |
1250 */ | |
1251 nm_avail_plmn_list(); | |
1252 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
1253 //After retrieving the list we see if an error occured | |
1254 //and flash an alert to the user accordingly. | |
1255 if(g_ensErr == 1) | |
1256 { | |
1257 g_ensErr = 0; | |
1258 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
1259 return 1; | |
1260 } | |
1261 | |
1262 /* | |
1263 * remove network log if needed | |
1264 */ | |
1265 network_remove_network_log (); | |
1266 | |
1267 /* | |
1268 * Remove Main Menu | |
1269 */ | |
1270 //nm menuExit(); | |
1271 | |
1272 network_start_animation (); | |
1273 | |
1274 network_data.aborted = FALSE; | |
1275 return 1; | |
1276 } | |
1277 | |
1278 /* | |
1279 +--------------------------------------------------------------------+ | |
1280 | PROJECT : MMI (6366) MODULE : MmiNetwork | | |
1281 | STATE : code ROUTINE : network_pref_list | | |
1282 +--------------------------------------------------------------------+ | |
1283 | |
1284 PURPOSE : Show the preferred list | |
1285 | |
1286 */ | |
1287 int network_pref_list(T_MFW_MNU *m, T_MFW_MNU_ITEM *mi) | |
1288 { | |
1289 //TRACE_FUNCTION ("network_pref_list()"); | |
1290 | |
1291 /* | |
1292 * Request the maximum number of preferred PLMN records | |
1293 * on the SIM card | |
1294 */ | |
1295 nm_pplmn_mem_req(); | |
1296 | |
1297 | |
1298 | |
1299 return 1; | |
1300 } | |
1301 | |
1302 | |
1303 /******************************************************************************* | |
1304 | |
1305 $Function: network_remove_network_log | |
1306 | |
1307 $Description: Reset network log if set. | |
1308 | |
1309 $Returns: | |
1310 | |
1311 $Arguments: | |
1312 | |
1313 *******************************************************************************/ | |
1314 static void network_remove_network_log (void) | |
1315 { | |
1316 | |
1317 if (FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED) | |
1318 { | |
1319 /* | |
1320 * Until now the network log has been used. | |
1321 * Now write to FFS | |
1322 */ | |
1323 FFS_flashData.net_log_status = NM_LOG_AVAIL_NOT_USED; | |
1324 flash_write(); | |
1325 | |
1326 } | |
1327 } | |
1328 | |
1329 /******************************************************************************* | |
1330 | |
1331 $Function: network_log_off | |
1332 | |
1333 $Description: Removes a network log and returns to automatic registration. | |
1334 | |
1335 $Returns: | |
1336 | |
1337 $Arguments: | |
1338 | |
1339 *******************************************************************************/ | |
1340 int network_log_off(T_MFW_MNU *m, T_MFW_MNU_ITEM *i) | |
1341 { | |
1342 TRACE_FUNCTION ("network_log_off()"); | |
1343 | |
1344 /* | |
1345 * Same behaviour as automatic registration | |
1346 */ | |
1347 network_set_mode_auto (m,i); | |
1348 | |
1349 | |
1350 network_start_animation (); | |
1351 | |
1352 return 1; | |
1353 } | |
1354 | |
1355 /******************************************************************************* | |
1356 | |
1357 $Function: network_log_on | |
1358 | |
1359 $Description: Sets a network log. | |
1360 | |
1361 $Returns: | |
1362 | |
1363 $Arguments: | |
1364 | |
1365 *******************************************************************************/ | |
1366 int network_log_on(T_MFW_MNU *m, T_MFW_MNU_ITEM *i) | |
1367 { | |
1368 | |
1369 | |
1370 TRACE_FUNCTION ("network_log_on()"); | |
1371 | |
1372 | |
1373 if (FFS_flashData.net_log_status EQ NM_LOG_AVAIL_NOT_USED OR | |
1374 FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED) | |
1375 { | |
1376 /* | |
1377 * Until now the network log has been not used. | |
1378 * Now set the PCM. | |
1379 */ | |
1380 FFS_flashData.net_log_status = NM_LOG_AVAIL_USED; | |
1381 memcpy (FFS_flashData.plmn_name, network_data.plmn_name, SIZE_PLMN_NAME); | |
1382 memcpy (FFS_flashData.network_name, network_data.network_name, SIZE_NETWORK_NAME); | |
1383 | |
1384 | |
1385 flash_write(); | |
1386 /* | |
1387 * Save the manual mode in PCM for next power on | |
1388 */ | |
1389 nm_set_mode(NM_MANUAL); | |
1390 | |
1391 /* | |
1392 * Start the registration of the logged network | |
1393 */ | |
1394 nm_select_plmn (network_data.network_name); | |
1395 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
1396 //After retrieving the list we see if an error occured | |
1397 //and flash an alert to the user accordingly. | |
1398 if(g_ensErr == 1) | |
1399 { | |
1400 g_ensErr = 0; | |
1401 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
1402 } | |
1403 } | |
1404 | |
1405 | |
1406 network_start_animation (); | |
1407 | |
1408 return 1; | |
1409 } | |
1410 | |
1411 /******************************************************************************* | |
1412 | |
1413 $Function: network_start_full_service | |
1414 | |
1415 $Description: Starts a full service registration. | |
1416 a) manual selection | |
1417 b) automatic selection | |
1418 c) network log selection | |
1419 | |
1420 $Returns: | |
1421 | |
1422 $Arguments: | |
1423 | |
1424 *******************************************************************************/ | |
1425 void network_start_full_service(void) | |
1426 { | |
1427 | |
1428 TRACE_FUNCTION ("network_start_full_service()"); | |
1429 | |
1430 network_data.status = NETWORK_SEARCH_NETWORK; | |
1431 | |
1432 if(FFS_flashData.plmn_name == NULL) //if no network data | |
1433 { /* | |
1434 * Start normal Registration | |
1435 */ | |
1436 #if defined (WIN32) | |
1437 EXTERN UBYTE mmi_reg_mode; | |
1438 | |
1439 if (mmi_reg_mode EQ 0) | |
1440 nm_registration (NM_AUTOMATIC,0, 0); | |
1441 else | |
1442 nm_registration (NM_MANUAL,0, 0); | |
1443 #else | |
1444 if (nm_get_mode() == NM_MANUAL) | |
1445 SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 0, 0); | |
1446 nm_registration (nm_get_mode (),0, 0); | |
1447 #endif | |
1448 } | |
1449 else | |
1450 { | |
1451 switch (FFS_flashData.net_log_status) | |
1452 { | |
1453 case NM_LOG_AVAIL_USED: | |
1454 memcpy (network_data.plmn_name, FFS_flashData.plmn_name, SIZE_PLMN_NAME); | |
1455 memcpy (network_data.network_name, FFS_flashData.network_name, SIZE_NETWORK_NAME); | |
1456 nm_select_plmn (network_data.network_name); | |
1457 break; | |
1458 default: | |
1459 if (nm_get_mode() == NM_MANUAL) | |
1460 SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 0, 0); | |
1461 nm_registration (nm_get_mode (),0, 0); | |
1462 break; | |
1463 } | |
1464 } | |
1465 //Sep 23, 2004 REF: CRR 24562 xvilliva | |
1466 //After retrieving the list we see if an error occured | |
1467 //and flash an alert to the user accordingly. | |
1468 if(g_ensErr == 1) | |
1469 { | |
1470 g_ensErr = 0; | |
1471 info_screen(0, TxtNotAllowed, TxtNull, NULL); | |
1472 } | |
1473 } | |
1474 | |
1475 /******************************************************************************* | |
1476 | |
1477 $Function: network_get_name | |
1478 | |
1479 $Description: Returns the textual and numeric representation of the | |
1480 network name. | |
1481 | |
1482 $Returns: | |
1483 | |
1484 $Arguments: | |
1485 | |
1486 *******************************************************************************/ | |
1487 void network_get_name(T_CURRENT_NETWORK * nm) | |
1488 { | |
1489 #ifdef NO_ASCIIZ | |
1490 T_MFW_SP_NAME service_provider_name; | |
1491 #else | |
1492 U8 service_provider_name[LONG_NAME]; | |
1493 #endif | |
1494 TRACE_FUNCTION ("network_get_name()"); | |
1495 | |
1496 //x0pleela 15 Feb, 2006 ER: OMAPS00065203 | |
1497 //Included flag NEPTUNE_BOARD to retain old code for operator get name and | |
1498 //added new code for this ER also | |
1499 | |
1500 #ifndef NEPTUNE_BOARD | |
1501 | |
1502 //x0pleela 09 Feb, 2006 ER: OMAPS00065203 | |
1503 //Removed the code as prioritized operator name is already updated to network_data | |
1504 // and CPHS check is not required | |
1505 | |
1506 //x0pleela 09 Feb, 2006 ER: OMAPS00065203 | |
1507 //Updating prioritized operator name | |
1508 memset( nm->plmn_name, 0, SIZE_PLMN_NAME ); | |
1509 memset( nm->network_name, 0, SIZE_NETWORK_NAME ); | |
1510 memcpy (nm->plmn_name, network_data.plmn_name, SIZE_PLMN_NAME); | |
1511 memcpy (nm->network_name, network_data.network_name, SIZE_NETWORK_NAME); | |
1512 | |
1513 memset( nm->service_provider_name, 0, SP_NAME ); | |
1514 #else | |
1515 if (CphsPresent() )//if CPHS supported | |
1516 { | |
1517 T_MFW_CPHS_OP_NAME* operator_name; | |
1518 operator_name = CphsRequestOperatorName(); //get operator name | |
1519 | |
1520 if (operator_name->longName.data[0] != NULL)//if name not blank | |
1521 { | |
1522 memcpy(nm->plmn_name, operator_name->longName.data, SIZE_PLMN_NAME); | |
1523 TRACE_EVENT("Reading PLMN from SIM"); | |
1524 } | |
1525 else | |
1526 memcpy (nm->plmn_name, network_data.plmn_name, SIZE_PLMN_NAME); | |
1527 | |
1528 if (operator_name->shortName.data[0] != NULL)//if name not blank | |
1529 { | |
1530 memcpy(nm->network_name, operator_name->shortName.data, SIZE_NETWORK_NAME); | |
1531 } | |
1532 else | |
1533 memcpy (nm->network_name, network_data.network_name, SIZE_NETWORK_NAME); | |
1534 } | |
1535 else | |
1536 { | |
1537 | |
1538 memcpy (nm->plmn_name, network_data.plmn_name, SIZE_PLMN_NAME); | |
1539 memcpy (nm->network_name, network_data.network_name, SIZE_NETWORK_NAME); | |
1540 | |
1541 } | |
1542 /* Marcus: Issue 1618: 24/01/2003: Start */ | |
1543 /* Obtain the service provider name (from the SIM EF-SPN file) if any */ | |
1544 nm->service_provider_name[0] = '\0'; | |
1545 #endif | |
1546 #ifdef NO_ASCIIZ | |
1547 nm_get_spn(&service_provider_name); | |
1548 if ((service_provider_name.len != 0) && | |
1549 (service_provider_name.data[0] != '\0')) | |
1550 { | |
1551 if (service_provider_name.len > sizeof(nm->service_provider_name)-1) | |
1552 service_provider_name.len = sizeof(nm->service_provider_name)-1; | |
1553 | |
1554 memcpy(nm->service_provider_name, | |
1555 service_provider_name.data, | |
1556 service_provider_name.len); | |
1557 | |
1558 nm->service_provider_name[service_provider_name.len] = '\0'; | |
1559 } | |
1560 #else | |
1561 nm_get_spn(service_provider_name); | |
1562 if (strlen(service_provider_name)) | |
1563 { | |
1564 strncpy(nm->service_provider_name, | |
1565 service_provider_name, | |
1566 sizeof(nm->service_provider_name)-1); | |
1567 | |
1568 nm->service_provider_name[sizeof(nm->service_provider_name)-1] = '\0'; | |
1569 } | |
1570 #endif | |
1571 /* Marcus: Issue 1618: 24/01/2003: End */ | |
1572 nm->roaming_indicator = network_data.roaming_indicator; | |
1573 } | |
1574 | |
1575 /******************************************************************************* | |
1576 | |
1577 $Function: network_log_enabled | |
1578 | |
1579 $Description: Checks whether a network log is active or not. | |
1580 | |
1581 $Returns: | |
1582 | |
1583 $Arguments: | |
1584 | |
1585 *******************************************************************************/ | |
1586 static UBYTE network_log_enabled (void) | |
1587 { | |
1588 | |
1589 TRACE_FUNCTION ("network_log_enabled()"); | |
1590 | |
1591 if (FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED) | |
1592 return TRUE; | |
1593 | |
1594 return FALSE; | |
1595 } | |
1596 | |
1597 /******************************************************************************* | |
1598 | |
1599 $Function: ListMenuData | |
1600 | |
1601 $Description: Creates a list of available PLMNs for selection. | |
1602 | |
1603 $Returns: | |
1604 | |
1605 $Arguments: | |
1606 | |
1607 *******************************************************************************/ | |
1608 static ListMenuData * network_create_list (T_network * data, T_MFW_PLMN_LIST * plmn_list) | |
1609 { | |
1610 UBYTE i; | |
1611 | |
1612 ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData)); | |
1613 | |
1614 if (list_menu_data EQ 0) | |
1615 return NULL; | |
1616 | |
1617 /* Allocated memory only for availble number of plmn list count */ | |
1618 /* OMAPS00061049 - 08-03-2006 */ | |
1619 #ifndef NEPTUNE_BOARD | |
1620 list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (MAX_PLMN * sizeof (T_MFW_MNU_ITEM)); | |
1621 #else | |
1622 list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (plmn_list->count * sizeof (T_MFW_MNU_ITEM)); | |
1623 #endif | |
1624 | |
1625 if (list_menu_data->List EQ 0) | |
1626 return NULL; | |
1627 | |
1628 /* | |
1629 * Fill Menu List | |
1630 */ | |
1631 #ifdef FF_2TO1_PS | |
1632 for (i=0;i<MMREG_MAX_PLMN_ID;i++) | |
1633 #else | |
1634 for (i=0;i<MAX_PLMN_ID;i++) | |
1635 #endif | |
1636 { | |
1637 #ifndef NEPTUNE_BOARD | |
1638 /* Taken this statement inside the condition */ | |
1639 /* OMAPS00061049 - 08-03-2006 */ | |
1640 mnuInitDataItem(&list_menu_data->List[i]); | |
1641 #endif | |
1642 | |
1643 if (i < plmn_list->count) | |
1644 { | |
1645 #ifdef NEPTUNE_BOARD | |
1646 mnuInitDataItem(&list_menu_data->List[i]); | |
1647 #endif | |
1648 | |
1649 /* | |
1650 * set network name | |
1651 */ | |
1652 #ifdef NO_ASCIIZ | |
1653 if (plmn_list->plmn[i].network_long.len NEQ 0) | |
1654 { | |
1655 list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_long.data; | |
1656 } | |
1657 #else | |
1658 if (strlen((char *)plmn_list->plmn[i].network_long) NEQ 0) | |
1659 { | |
1660 list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_long; | |
1661 } | |
1662 #endif | |
1663 else | |
1664 { | |
1665 list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_numeric; | |
1666 } | |
1667 | |
1668 /* | |
1669 * Store numeric network name in any case | |
1670 */ | |
1671 strncpy ((char *)data->network_search_name[i], (char *)plmn_list->plmn[i].network_numeric, 6); | |
1672 | |
1673 | |
1674 /* | |
1675 * NOTE : add forbidden indicator | |
1676 */ | |
1677 list_menu_data->List[i].flagFunc = item_flag_none; | |
1678 } | |
1679 else | |
1680 { | |
1681 } | |
1682 } | |
1683 | |
1684 /* | |
1685 * Fill common parameter for list handling | |
1686 */ | |
1687 | |
1688 list_menu_data->ListLength = plmn_list->count; | |
1689 list_menu_data->ListPosition = 1; | |
1690 list_menu_data->CursorPosition = 1; | |
1691 list_menu_data->SnapshotSize = plmn_list->count; | |
1692 list_menu_data->Font = 0; | |
1693 list_menu_data->LeftSoftKey = TxtSoftSelect; | |
1694 list_menu_data->RightSoftKey = TxtSoftBack; | |
1695 // Sep 8, 2004 REF: CRR 16062 xvilliva | |
1696 //Though all the key events are monitered, the listsKeyEvent() | |
1697 //responds to a few keys which includes KCD_MNUSELECT. | |
1698 list_menu_data->KeyEvents = KEY_ALL; | |
1699 list_menu_data->Reason = 0; | |
1700 list_menu_data->Strings = TRUE; | |
1701 list_menu_data->Attr = &network_menuAttrib; | |
1702 list_menu_data->autoDestroy = TRUE; | |
1703 list_menu_data->listCol = COLOUR_LIST_XX; | |
1704 | |
1705 | |
1706 return list_menu_data; | |
1707 } | |
1708 | |
1709 /******************************************************************************* | |
1710 | |
1711 $Function: network_create_pref_list | |
1712 | |
1713 $Description: Creates a list of preferred PLMNs for selection. | |
1714 | |
1715 $Returns: | |
1716 | |
1717 $Arguments: | |
1718 | |
1719 *******************************************************************************/ | |
1720 static ListMenuData * network_create_pref_list (T_network * data) | |
1721 { | |
1722 UBYTE i; | |
1723 | |
1724 ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData)); | |
1725 | |
1726 if (list_menu_data EQ 0) | |
1727 { | |
1728 return NULL; | |
1729 } | |
1730 | |
1731 list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY ((data->pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM)); | |
1732 | |
1733 if (list_menu_data->List EQ 0) | |
1734 { | |
1735 | |
1736 /* cq12719 If second memory alloc fails Free the memory allocated for list menu data. 16-03-04 MZ */ | |
1737 if(NULL != list_menu_data) | |
1738 FREE_MEMORY ((void *)list_menu_data, sizeof (ListMenuData)); | |
1739 | |
1740 return NULL; | |
1741 } | |
1742 | |
1743 TRACE_EVENT ("network_create_pref_list ()"); | |
1744 | |
1745 | |
1746 | |
1747 /* | |
1748 * Fill Menu List | |
1749 */ | |
1750 for (i=0; i < (network_data.pplmn_mem.maxRcd); i++) | |
1751 { | |
1752 mnuInitDataItem(&list_menu_data->List[i]); | |
1753 | |
1754 /* | |
1755 * set network name | |
1756 */ | |
1757 | |
1758 #ifdef NO_ASCIIZ | |
1759 if (network_data.pplmn[i].network_long.len NEQ 0 ) | |
1760 { | |
1761 list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long.data; | |
1762 } | |
1763 #else | |
1764 if (strlen((char *)network_data.pplmn[i].network_long) NEQ 0 ) | |
1765 { | |
1766 list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long; | |
1767 } | |
1768 #endif | |
1769 else | |
1770 { | |
1771 list_menu_data->List[i].str = GET_TEXT(TxtEmpty); | |
1772 TRACE_EVENT ("network_long == 0"); | |
1773 } | |
1774 | |
1775 list_menu_data->List[i].flagFunc = item_flag_none; | |
1776 | |
1777 } | |
1778 /* | |
1779 * Fill common parameter for list handling | |
1780 */ | |
1781 | |
1782 | |
1783 list_menu_data->ListLength = network_data.pplmn_mem.maxRcd; | |
1784 list_menu_data->ListPosition = 1; | |
1785 list_menu_data->CursorPosition = 1; | |
1786 list_menu_data->SnapshotSize = network_data.pplmn_mem.maxRcd; | |
1787 list_menu_data->Font = 0; | |
1788 list_menu_data->LeftSoftKey = TxtSoftOptions; /* SPR#2354 - SH - Change 'Select' to 'Options' */ | |
1789 list_menu_data->RightSoftKey = TxtSoftBack; | |
1790 list_menu_data->KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN; | |
1791 list_menu_data->Reason = 0; | |
1792 list_menu_data->Strings = TRUE; | |
1793 list_menu_data->Attr = &network_menuAttrib; | |
1794 list_menu_data->autoDestroy = TRUE; | |
1795 list_menu_data->listCol = COLOUR_LIST_XX; | |
1796 | |
1797 return list_menu_data; | |
1798 } | |
1799 | |
1800 /******************************************************************************* | |
1801 | |
1802 $Function: network_create_mobile_list | |
1803 | |
1804 $Description: | |
1805 | |
1806 $Returns: | |
1807 | |
1808 $Arguments: | |
1809 | |
1810 *******************************************************************************/ | |
1811 static ListMenuData * network_create_mobile_list (T_network_OPT * data) | |
1812 { | |
1813 UBYTE i; | |
1814 | |
1815 ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof(ListMenuData)); | |
1816 | |
1817 if (list_menu_data EQ 0) | |
1818 { | |
1819 return NULL; | |
1820 TRACE_EVENT ("failed to create the list"); | |
1821 } | |
1822 | |
1823 mfwCheckMemoryLeft(); | |
1824 | |
1825 list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (MAX_SHOW_OF_PLMN * sizeof (T_MFW_MNU_ITEM)); | |
1826 | |
1827 mfwCheckMemoryLeft(); | |
1828 | |
1829 if (list_menu_data->List EQ 0) | |
1830 { | |
1831 return NULL; | |
1832 TRACE_EVENT ("failed to create the list"); | |
1833 } | |
1834 | |
1835 TRACE_EVENT ("network_create_mobile_list ()"); | |
1836 | |
1837 | |
1838 | |
1839 /* | |
1840 * Fill Menu List | |
1841 */ | |
1842 for (i=0; i < MAX_SHOW_OF_PLMN; i++) | |
1843 { | |
1844 mnuInitDataItem(&list_menu_data->List[i]); | |
1845 | |
1846 /* | |
1847 * set network name | |
1848 */ | |
1849 | |
1850 /*SPR 2635 copy set list strings pointing at longname strings*/ | |
1851 if (data->pplmn_longnames[i][0] NEQ 0 ) | |
1852 { | |
1853 list_menu_data->List[i].str =data->pplmn_longnames[i]; | |
1854 } | |
1855 else | |
1856 | |
1857 { | |
1858 list_menu_data->List[i].str = GET_TEXT(TxtEmpty); | |
1859 } | |
1860 | |
1861 /*SPR 2635, end*/ | |
1862 | |
1863 list_menu_data->List[i].flagFunc = item_flag_none; | |
1864 | |
1865 } | |
1866 /* | |
1867 * Fill common parameter for list handling | |
1868 */ | |
1869 | |
1870 | |
1871 list_menu_data->ListLength = MAX_SHOW_OF_PLMN; | |
1872 list_menu_data->ListPosition = 1; | |
1873 list_menu_data->CursorPosition = 1; | |
1874 list_menu_data->SnapshotSize = MAX_SHOW_OF_PLMN; | |
1875 list_menu_data->Font = 0; | |
1876 list_menu_data->LeftSoftKey = TxtSoftSelect; | |
1877 list_menu_data->RightSoftKey = TxtSoftBack; | |
1878 list_menu_data->KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN; | |
1879 list_menu_data->Reason = 0; | |
1880 list_menu_data->Strings = TRUE; | |
1881 list_menu_data->Attr = &network_menuAttrib; | |
1882 list_menu_data->autoDestroy = TRUE; /*destroy the menulist after press any sofkey*/ | |
1883 list_menu_data->listCol = COLOUR_LIST_XX; | |
1884 | |
1885 return list_menu_data; | |
1886 } | |
1887 | |
1888 | |
1889 /******************************************************************************* | |
1890 | |
1891 $Function: network_submenu | |
1892 | |
1893 $Description: Creates a submenu for the preferred list. | |
1894 | |
1895 $Returns: | |
1896 | |
1897 $Arguments: | |
1898 | |
1899 *******************************************************************************/ | |
1900 static ListMenuData * network_submenu (T_network * data, T_MFW_NETWORK_STRUCT * plmn_list) | |
1901 { | |
1902 UBYTE i; | |
1903 | |
1904 | |
1905 ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData)); | |
1906 | |
1907 if (list_menu_data EQ 0) | |
1908 return NULL; | |
1909 | |
1910 list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY ((NETWORK_MENU_ITEM) * sizeof (T_MFW_MNU_ITEM)); | |
1911 if (list_menu_data->List EQ 0) | |
1912 return NULL; | |
1913 | |
1914 /* | |
1915 * Fill Menu List | |
1916 */ | |
1917 for (i=0;i<(NETWORK_MENU_ITEM);i++) | |
1918 { | |
1919 mnuInitDataItem(&list_menu_data->List[i]); | |
1920 | |
1921 /* | |
1922 * set network name | |
1923 */ | |
1924 #ifdef NO_ASCIIZ | |
1925 if (plmn_list->network_long.len NEQ 0) | |
1926 list_menu_data->List[i].str = (char *)plmn_list->network_long.data; | |
1927 #else | |
1928 if (strlen((char *)plmn_list->network_long) NEQ 0) | |
1929 list_menu_data->List[i].str = (char *)plmn_list->network_long; | |
1930 #endif | |
1931 | |
1932 else | |
1933 ; | |
1934 //strncpy ((char *)list_menu_data->List[i].str,(char *)empty, 6); | |
1935 | |
1936 | |
1937 plmn_list ++; | |
1938 | |
1939 } | |
1940 /* | |
1941 * Fill common parameter for list handling | |
1942 */ | |
1943 list_menu_data->ListLength = data->pplmn_mem.maxRcd; | |
1944 list_menu_data->ListPosition = 1; | |
1945 list_menu_data->CursorPosition = 1; | |
1946 list_menu_data->SnapshotSize = data->pplmn_mem.maxRcd; | |
1947 list_menu_data->Font = 0; | |
1948 list_menu_data->LeftSoftKey = TxtSoftSelect; | |
1949 list_menu_data->RightSoftKey = TxtSoftBack; | |
1950 list_menu_data->KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN; | |
1951 list_menu_data->Reason = NETWORK_PREF_LIST_SELECTED; | |
1952 list_menu_data->Strings = TRUE; | |
1953 list_menu_data->Attr = &network_menuAttrib; | |
1954 list_menu_data->listCol = COLOUR_LIST_XX; | |
1955 | |
1956 return list_menu_data; | |
1957 } | |
1958 | |
1959 | |
1960 | |
1961 /******************************************************************************* | |
1962 | |
1963 $Function: network_list_cb | |
1964 | |
1965 $Description: Callback function list dialog. | |
1966 | |
1967 $Returns: | |
1968 | |
1969 $Arguments: | |
1970 | |
1971 *******************************************************************************/ | |
1972 static void network_list_cb(T_MFW_HND win, ListMenuData * ListData) | |
1973 { | |
1974 TRACE_FUNCTION ("network_list_cb()"); | |
1975 | |
1976 #ifndef NEPTUNE_BOARD | |
1977 if (ListData->Reason != LISTS_REASON_BACK) | |
1978 { | |
1979 SEND_EVENT (win, NETWORK_LIST_SELECT_PLMN, ListData->CursorPosition, NULL); | |
1980 } | |
1981 | |
1982 #else | |
1983 if (ListData->Reason EQ LISTS_REASON_SELECT) | |
1984 { | |
1985 SEND_EVENT (win, NETWORK_LIST_SELECT_PLMN, ListData->CursorPosition, NULL); | |
1986 SEND_EVENT (win, NETWORK_LIST_DESTORY, NULL, NULL); | |
1987 } | |
1988 | |
1989 if ((ListData->Reason EQ LISTS_REASON_BACK) || | |
1990 (ListData->Reason EQ LISTS_REASON_CLEAR)|| | |
1991 (ListData->Reason EQ LISTS_REASON_HANGUP)) | |
1992 | |
1993 { | |
1994 SEND_EVENT (win, NETWORK_LIST_DESTORY, NULL, NULL); | |
1995 } | |
1996 #endif | |
1997 | |
1998 } | |
1999 | |
2000 /******************************************************************************* | |
2001 | |
2002 $Function: network_pref_list_cb | |
2003 | |
2004 $Description: Callback function pref. list dialog. | |
2005 | |
2006 $Returns: | |
2007 | |
2008 $Arguments: | |
2009 | |
2010 *******************************************************************************/ | |
2011 static void network_pref_list_cb(T_MFW_HND win, ListMenuData * ListData) | |
2012 { | |
2013 TRACE_FUNCTION ("network_pref_list_cb()"); | |
2014 | |
2015 if (ListData->Reason EQ LISTS_REASON_SELECT) | |
2016 { | |
2017 | |
2018 // call here the MenuOptions with the items "Select from the list" | |
2019 | |
2020 FREE_MEMORY ((UBYTE *)network_data.network_list->List, (network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM)); | |
2021 | |
2022 FREE_MEMORY ((UBYTE *)network_data.network_list, sizeof (ListMenuData)); | |
2023 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
2024 //Commented FREE_MEMORY for network_data.pplmn as this is required when we enter the option menu. | |
2025 // Nov 02, 2005 REF: omaps00044855 Sumanth Kumar.C | |
2026 // Solution: Comment network_data.pplmn memory free. | |
2027 /* | |
2028 // cq12719 Stop the memory leak 17-03-04 MZ. | |
2029 FREE_MEMORY ((UBYTE *)network_data.pplmn,(network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_NETWORK_STRUCT)); | |
2030 */ | |
2031 //keep the position of the selected PLMN, need it later to update the list | |
2032 network_data.Listposition = ListData->ListPosition; | |
2033 | |
2034 network_MNU_start(win,&network_OPTAttrib); | |
2035 } | |
2036 else | |
2037 { | |
2038 | |
2039 //user pressed Exit to go back to the network submenu | |
2040 FREE_MEMORY ((UBYTE *)network_data.network_list->List, (network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM)); | |
2041 | |
2042 FREE_MEMORY ((UBYTE *)network_data.network_list, sizeof (ListMenuData)); | |
2043 | |
2044 FREE_MEMORY ((UBYTE *)network_data.pplmn,(network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_NETWORK_STRUCT)); | |
2045 | |
2046 } | |
2047 | |
2048 | |
2049 } | |
2050 | |
2051 /******************************************************************************* | |
2052 | |
2053 $Function: network_mobile_list_cb | |
2054 | |
2055 $Description: Callback function international list dialog. | |
2056 | |
2057 $Returns: | |
2058 | |
2059 $Arguments: | |
2060 | |
2061 *******************************************************************************/ | |
2062 static void network_mobile_list_cb(T_MFW_HND win, ListMenuData * ListData) | |
2063 { | |
2064 | |
2065 /* UBYTE i;*/ /* Warning Correction */ | |
2066 | |
2067 T_MFW_PPLMN_MODE mode; | |
2068 | |
2069 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
2070 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2071 T_DISPLAY_DATA display_info; | |
2072 | |
2073 TRACE_EVENT ("network_mobile_list_cb()"); | |
2074 | |
2075 | |
2076 switch (ListData->Reason) | |
2077 { | |
2078 case LISTS_REASON_SELECT: /* */ | |
2079 | |
2080 mode = REPLACE_PREF_PLMN; /* Overwrite an existing entry at a given index */ | |
2081 /*SPR 2635, use new function to replace preferred PLMN using the longname*/ | |
2082 nm_change_pref_plmn_longname(mode,(network_data.Listposition) +1 , 0, data->pplmn_longnames[ListData->ListPosition]); | |
2083 | |
2084 /* SPR#2354 - SH - Now display "Changed". On callback, redraw network list */ | |
2085 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtChanged, TxtNull, COLOUR_STATUS_NETWORKS); | |
2086 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_mobile_list_changed_cb, THREE_SECS, 0 ); | |
2087 | |
2088 info_dialog (win, &display_info); | |
2089 | |
2090 break; | |
2091 case LISTS_REASON_BACK: /* back to previous menu */ | |
2092 | |
2093 TRACE_EVENT ("pressed Back-key"); | |
2094 | |
2095 //API - SPR 2025 - 22/05/03 - De Allocate memory to avoid memory leak and also Crash | |
2096 if ( network_data.pplmn != NULL ) | |
2097 FREE_MEMORY ((UBYTE *)network_data.pplmn,(network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_NETWORK_STRUCT)); | |
2098 | |
2099 network_MNU_destroy(data->win); | |
2100 | |
2101 break; | |
2102 default: | |
2103 return; | |
2104 } | |
2105 | |
2106 | |
2107 } | |
2108 | |
2109 /******************************************************************************* | |
2110 | |
2111 $Function: network_mobile_list_changed_cb | |
2112 | |
2113 $Description: Callback from "Changed" message. Destroys the list and recreates the | |
2114 updated network list. | |
2115 | |
2116 $Returns: | |
2117 | |
2118 $Arguments: | |
2119 | |
2120 *******************************************************************************/ | |
2121 | |
2122 void network_mobile_list_changed_cb(T_MFW_HND win , USHORT identifier, UBYTE reason) | |
2123 { | |
2124 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
2125 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2126 /* T_DISPLAY_DATA display_info; */ /* Warning Correction */ | |
2127 | |
2128 /* destroy the Menu */ | |
2129 network_MNU_destroy(data->win); | |
2130 | |
2131 /* request the pref. PLMN list */ | |
2132 nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1); | |
2133 | |
2134 return; | |
2135 } | |
2136 | |
2137 | |
2138 /******************************************************************************* | |
2139 | |
2140 $Function: network_start_animation | |
2141 | |
2142 $Description: Starts the network animation. | |
2143 | |
2144 $Returns: | |
2145 | |
2146 $Arguments: | |
2147 | |
2148 *******************************************************************************/ | |
2149 static void network_start_animation(void) | |
2150 { | |
2151 T_DISPLAY_DATA display_info; | |
2152 | |
2153 TRACE_FUNCTION ("network_start_animation()"); | |
2154 | |
2155 if (network_data.network_search_win != NULL) | |
2156 { | |
2157 network_stop_animation(); | |
2158 } | |
2159 | |
2160 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, "Searching for", "Networks", COLOUR_STATUS_NETWORKS); | |
2161 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_animation_cb, FOREVER, KEY_CLEAR| KEY_RIGHT ); | |
2162 /* | |
2163 * Call Info Screen | |
2164 */ | |
2165 | |
2166 network_data.network_search_win = info_dialog (network_data.network_win, &display_info); | |
2167 } | |
2168 | |
2169 | |
2170 /******************************************************************************* | |
2171 | |
2172 $Function: network_start_animation_plmn_selection | |
2173 | |
2174 $Description: Starts the plmn selection animation. | |
2175 | |
2176 $Returns: | |
2177 | |
2178 $Arguments: | |
2179 | |
2180 *******************************************************************************/ | |
2181 static void network_start_animation_plmn_selection(int plmn_value) | |
2182 { | |
2183 T_DISPLAY_DATA display_info; | |
2184 /* T_MFW_PLMN_LIST * plmn_list; */ /* Warning Correction */ | |
2185 | |
2186 TRACE_FUNCTION ("network_start_animation()"); | |
2187 | |
2188 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, "Requesting....", NULL, COLOUR_STATUS_NETWORKS); | |
2189 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_animation_cb, FOREVER, KEY_CLEAR| KEY_RIGHT ); | |
2190 | |
2191 /* | |
2192 * Call Info Screen | |
2193 */ | |
2194 | |
2195 network_data.network_search_win = info_dialog (network_data.network_win, &display_info); | |
2196 } | |
2197 | |
2198 | |
2199 /******************************************************************************* | |
2200 | |
2201 $Function: network_forbidden_plmn | |
2202 | |
2203 $Description: Starts the forbidden plmn data screen. | |
2204 | |
2205 $Returns: | |
2206 | |
2207 $Arguments: | |
2208 | |
2209 *******************************************************************************/ | |
2210 static void network_forbidden_plmn(void) | |
2211 { | |
2212 T_DISPLAY_DATA display_info; | |
2213 | |
2214 TRACE_FUNCTION ("network_forbidden_plmn()"); | |
2215 | |
2216 if (network_data.network_search_win != NULL) | |
2217 { | |
2218 network_stop_animation(); | |
2219 } | |
2220 | |
2221 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNetwork, TxtForbidden, COLOUR_STATUS_NETWORKS); | |
2222 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_animation_cb, 3500, KEY_CLEAR| KEY_RIGHT ); | |
2223 /* | |
2224 * Call Info Screen | |
2225 */ | |
2226 | |
2227 network_data.network_search_win = info_dialog (network_data.network_win, &display_info); | |
2228 } | |
2229 | |
2230 | |
2231 /******************************************************************************* | |
2232 | |
2233 $Function: network_selected | |
2234 | |
2235 $Description: displays info screen on network selected | |
2236 | |
2237 $Returns: | |
2238 | |
2239 $Arguments: | |
2240 | |
2241 *******************************************************************************/ | |
2242 static void network_selected(void) | |
2243 { | |
2244 T_DISPLAY_DATA display_info; | |
2245 | |
2246 TRACE_FUNCTION ("network_start_animation()"); | |
2247 | |
2248 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNetwork, TxtSelected, COLOUR_STATUS_NETWORKS); | |
2249 // Jul 21, 2004 REF: CRR 13348 xvilliva | |
2250 // We use a new callback to return to idle screen after the alert is flashed. | |
2251 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_select_animation_cb, 3500, KEY_CLEAR| KEY_RIGHT ); | |
2252 | |
2253 /* | |
2254 * Call Info Screen | |
2255 */ | |
2256 | |
2257 network_data.network_search_win = info_dialog (network_data.network_win, &display_info); | |
2258 } | |
2259 | |
2260 /******************************************************************************* | |
2261 | |
2262 $Function: network_no_plmns | |
2263 | |
2264 $Description: Indicate Info Screen that the network list is empty. | |
2265 | |
2266 $Returns: | |
2267 | |
2268 $Arguments: | |
2269 | |
2270 *******************************************************************************/ | |
2271 static void network_no_plmns(void) | |
2272 { | |
2273 T_DISPLAY_DATA display_info; | |
2274 | |
2275 TRACE_FUNCTION ("network_no_plmns()"); | |
2276 | |
2277 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, "No networks", "available", COLOUR_STATUS_NETWORKS); | |
2278 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_animation_cb, THREE_SECS, KEY_CLEAR| KEY_RIGHT ); | |
2279 /* | |
2280 * Call Info Screen | |
2281 */ | |
2282 info_dialog (0, &display_info); | |
2283 | |
2284 } | |
2285 /******************************************************************************* | |
2286 | |
2287 $Function: network_stop_animation | |
2288 | |
2289 $Description: Stops the network animation. | |
2290 | |
2291 $Returns: | |
2292 | |
2293 $Arguments: | |
2294 | |
2295 *******************************************************************************/ | |
2296 static void network_stop_animation(void) | |
2297 { | |
2298 TRACE_FUNCTION ("network_stop_animation()"); | |
2299 | |
2300 if (network_data.network_search_win) | |
2301 { | |
2302 SEND_EVENT(network_data.network_search_win,DIALOG_DESTROY,0,0); | |
2303 network_data.network_search_win = 0; | |
2304 } | |
2305 } | |
2306 /******************************************************************************* | |
2307 | |
2308 $Function: network_animation_cb | |
2309 | |
2310 $Description: Callback for information dialog (not used)n | |
2311 | |
2312 $Returns: | |
2313 | |
2314 $Arguments: | |
2315 | |
2316 *******************************************************************************/ | |
2317 void network_animation_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) | |
2318 { | |
2319 TRACE_FUNCTION ("network_animation_cb()"); | |
2320 | |
2321 network_data.network_search_win = 0; | |
2322 network_data.aborted = TRUE; | |
2323 } | |
2324 | |
2325 /******************************************************************************* | |
2326 | |
2327 $Function: network_select_animation_cb | |
2328 | |
2329 $Description: Callback for information dialog "Network Selected". | |
2330 | |
2331 $Returns: | |
2332 | |
2333 $Arguments: | |
2334 | |
2335 *******************************************************************************/ | |
2336 void network_select_animation_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) | |
2337 { | |
2338 TRACE_FUNCTION ("network_select_animation_cb()"); | |
2339 | |
2340 network_data.network_search_win = 0; | |
2341 network_data.aborted = TRUE; | |
2342 // Jul 21, 2004 REF: CRR 13348 xvilliva | |
2343 // If "gPhbkMenu" is not NULL, we destroy phonebook menu | |
2344 // to return to idle screen. | |
2345 if(gPhbkMenu != NULL) | |
2346 { | |
2347 bookPhonebookDestroy( gPhbkMenu ); | |
2348 } | |
2349 } | |
2350 | |
2351 /******************************************************************************* | |
2352 | |
2353 $Function: network_MNU_start | |
2354 | |
2355 $Description: called when the user press the Edit Softkey to enter the | |
2356 Option Menu "Select from the list" & "Enter the Network Code" & | |
2357 "Delete" | |
2358 $Returns: | |
2359 | |
2360 $Arguments: | |
2361 | |
2362 *******************************************************************************/ | |
2363 | |
2364 T_MFW_HND network_MNU_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr) | |
2365 { | |
2366 T_MFW_HND win; | |
2367 | |
2368 TRACE_FUNCTION ("network_MNU_start()"); | |
2369 | |
2370 win = network_MNU_create (parent_window); | |
2371 if (win NEQ NULL) | |
2372 { | |
2373 SEND_EVENT (win, E_INIT, NULL, (void *)menuAttr); | |
2374 } | |
2375 return win; | |
2376 } | |
2377 | |
2378 /******************************************************************************* | |
2379 | |
2380 $Function: network_MNU_create | |
2381 | |
2382 $Description: Create the Option window | |
2383 | |
2384 $Returns: mfw window handle | |
2385 | |
2386 $Arguments: parent_window -parent window handle | |
2387 | |
2388 *******************************************************************************/ | |
2389 | |
2390 static T_MFW_HND network_MNU_create(MfwHnd parent_window) | |
2391 { | |
2392 T_network_OPT * data = (T_network_OPT *)ALLOC_MEMORY (sizeof (T_network_OPT)); | |
2393 T_MFW_WIN * win; | |
2394 | |
2395 TRACE_FUNCTION ("network_MNU_create()"); | |
2396 | |
2397 /* | |
2398 * Create window handler | |
2399 */ | |
2400 | |
2401 data->win = | |
2402 win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)network_MNU_win_cb); | |
2403 if (data->win EQ NULL) | |
2404 { | |
2405 return NULL; | |
2406 } | |
2407 | |
2408 /* | |
2409 * connect the dialog data to the MFW-window | |
2410 */ | |
2411 | |
2412 data->mmi_control.dialog = (T_DIALOG_FUNC)network_MNU_exec_cb; | |
2413 data->mmi_control.data = data; | |
2414 win = ((T_MFW_HDR *)data->win)->data; | |
2415 win->user = (void *)data; | |
2416 data->parent = parent_window; | |
2417 | |
2418 /* | |
2419 * return window handle | |
2420 */ | |
2421 | |
2422 return data->win; | |
2423 } | |
2424 | |
2425 /******************************************************************************* | |
2426 | |
2427 $Function: network_MNU_destroy | |
2428 | |
2429 $Description: Destroy the Option window | |
2430 | |
2431 $Returns: mfw window handle | |
2432 | |
2433 $Arguments: own_window - current window | |
2434 | |
2435 *******************************************************************************/ | |
2436 | |
2437 static void network_MNU_destroy(MfwHnd own_window) | |
2438 { | |
2439 T_MFW_WIN * win_data; | |
2440 T_network_OPT * data; | |
2441 /* T_MFW_PPLMN_MEM *pplmn_mem; */ /* Warning Correction */ | |
2442 | |
2443 TRACE_FUNCTION ("network_MNU_destroy()"); | |
2444 | |
2445 if (own_window) | |
2446 { | |
2447 win_data = ((T_MFW_HDR *)own_window)->data; | |
2448 data = (T_network_OPT *)win_data->user; | |
2449 | |
2450 if (data) | |
2451 { | |
2452 kbd_delete(data->kbd); | |
2453 kbd_delete(data->kbd_long); | |
2454 mnuDelete (data->menu); | |
2455 /* | |
2456 * Delete WIN handler | |
2457 */ | |
2458 win_delete (data->win); | |
2459 TRACE_EVENT("END of WIN DELETE"); | |
2460 | |
2461 if(data->network_list != NULL) | |
2462 { | |
2463 TRACE_EVENT("START FREE MEMORY"); | |
2464 | |
2465 /* Free the allocated memory for PLMN list window - OMAPS00061049 - 08-03-2006 */ | |
2466 #ifndef NEPTUNE_BOARD | |
2467 FREE_MEMORY ((UBYTE *)data->network_list->List, MAX_SHOW_OF_PLMN* sizeof (T_MFW_MNU_ITEM)); | |
2468 #else | |
2469 FREE_MEMORY ((UBYTE *)data->network_list->List, Plmn_list_count * sizeof (T_MFW_MNU_ITEM)); | |
2470 #endif | |
2471 | |
2472 FREE_MEMORY ((UBYTE *)data->network_list, sizeof (ListMenuData)); | |
2473 | |
2474 /*SPR 2635, free list of pointers to longname atrings*/ | |
2475 FREE_MEMORY ((UBYTE *)data->pplmn_longnames,MAX_SHOW_OF_PLMN* sizeof (char*)); | |
2476 | |
2477 TRACE_EVENT("END of FREE MEMORY"); | |
2478 } | |
2479 | |
2480 /* | |
2481 * Free Memory | |
2482 */ | |
2483 | |
2484 FREE_MEMORY ((void *)data, sizeof (T_network_OPT)); | |
2485 } | |
2486 else | |
2487 { | |
2488 TRACE_EVENT ("network_MNU_destroy() called twice"); | |
2489 } | |
2490 } | |
2491 } | |
2492 | |
2493 /******************************************************************************* | |
2494 | |
2495 $Function: network_MNU_exec_cb | |
2496 | |
2497 $Description: Exec callback function for the Option window | |
2498 | |
2499 $Returns: none | |
2500 | |
2501 $Arguments: win - current window | |
2502 event - event id | |
2503 value - unique id | |
2504 parameter - optional data. | |
2505 | |
2506 *******************************************************************************/ | |
2507 | |
2508 void network_MNU_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) | |
2509 { | |
2510 T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; | |
2511 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2512 /* T_MFW_HND * l_parent; */ /* Warning Correction */ | |
2513 /* SHORT l_id; */ /* Warning Correction */ | |
2514 /* T_MFW_HDR * parent = data->parent; */ /* Warning Correction */ | |
2515 /* T_MFW_EVENT MfwEvents; */ /* Warning Correction */ | |
2516 | |
2517 TRACE_FUNCTION ("network_MNU_exec_cb()"); | |
2518 | |
2519 | |
2520 switch (event) | |
2521 { | |
2522 case E_INIT: | |
2523 data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)network_MNU_kbd_cb); | |
2524 data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)network_MNU_kbd_cb); | |
2525 data->menu = mnuCreate(data->win,&network_OPTAttrib, E_MNU_ESCAPE, (MfwCb)network_MNU_mnu_cb); | |
2526 mnuLang(data->menu,mainMmiLng); | |
2527 | |
2528 /* put the (new) dialog window on top of the window stack */ | |
2529 mnuUnhide(data->menu); | |
2530 winShow(win); | |
2531 | |
2532 break; | |
2533 default: | |
2534 return; | |
2535 } | |
2536 } | |
2537 | |
2538 /******************************************************************************* | |
2539 | |
2540 $Function: network_MNU_mnu_cb | |
2541 | |
2542 $Description: Menu callback function for the Option window | |
2543 | |
2544 $Returns: none | |
2545 | |
2546 $Arguments: e - event id | |
2547 m - menu handle | |
2548 *******************************************************************************/ | |
2549 | |
2550 static int network_MNU_mnu_cb (MfwEvt e, MfwMnu *m) | |
2551 { | |
2552 T_MFW_HND win = mfwParent(mfw_header()); | |
2553 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
2554 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2555 /* T_MFW_HND * l_parent; */ /* Warning Correction */ | |
2556 /* SHORT l_id; */ /* Warning Correction */ | |
2557 | |
2558 TRACE_FUNCTION ("network_MNU_mnu_cb()"); | |
2559 | |
2560 switch (e) | |
2561 { | |
2562 case E_MNU_ESCAPE: /* back to previous menu "pref. network list"*/ | |
2563 network_MNU_destroy(data->win); | |
2564 | |
2565 // request MFW to fill up the pref. PLMN list | |
2566 nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1); | |
2567 | |
2568 | |
2569 break; | |
2570 default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */ | |
2571 return MFW_EVENT_REJECTED; | |
2572 } | |
2573 return MFW_EVENT_CONSUMED; | |
2574 } | |
2575 | |
2576 /******************************************************************************* | |
2577 | |
2578 $Function: network_MNU_win_cb | |
2579 | |
2580 $Description: Window callback function for the Option window | |
2581 | |
2582 $Returns: execution status | |
2583 | |
2584 $Arguments: e - event id | |
2585 w - window handle | |
2586 *******************************************************************************/ | |
2587 | |
2588 static int network_MNU_win_cb (MfwEvt e, MfwWin *w) | |
2589 { | |
2590 TRACE_FUNCTION ("network_MNU_win_cb()"); | |
2591 | |
2592 switch (e) | |
2593 { | |
2594 case MfwWinVisible: /* window is visible */ | |
2595 displaySoftKeys(TxtSoftSelect,TxtSoftBack); | |
2596 break; | |
2597 case MfwWinFocussed: /* input focus / selected */ | |
2598 case MfwWinDelete: /* window will be deleted */ | |
2599 default: | |
2600 return MFW_EVENT_REJECTED; | |
2601 } | |
2602 return MFW_EVENT_CONSUMED; | |
2603 } | |
2604 | |
2605 /******************************************************************************* | |
2606 | |
2607 $Function: network_MNU_kbd_cb | |
2608 | |
2609 $Description: Exec callback function for the Option window | |
2610 | |
2611 $Returns: execution status | |
2612 | |
2613 $Arguments: e - event id | |
2614 k - keyboard info | |
2615 *******************************************************************************/ | |
2616 | |
2617 static int network_MNU_kbd_cb (MfwEvt e, MfwKbd *k) | |
2618 { | |
2619 T_MFW_HND win = mfwParent(mfw_header()); | |
2620 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
2621 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2622 | |
2623 TRACE_FUNCTION ("network_MNU_kbd_cb()"); | |
2624 | |
2625 if (e & KEY_LONG) | |
2626 { | |
2627 switch (k->code) | |
2628 { | |
2629 case KCD_HUP: /* back to previous menu */ | |
2630 mnuEscape(data->menu); | |
2631 break; | |
2632 case KCD_RIGHT: /* Power Down */ | |
2633 return MFW_EVENT_REJECTED; /* handled by idle */ | |
2634 default: /* no response to all other keys */ | |
2635 return MFW_EVENT_CONSUMED; | |
2636 } | |
2637 } | |
2638 else | |
2639 { | |
2640 switch (k->code) | |
2641 { | |
2642 case KCD_MNUUP: /* highlight previous entry */ | |
2643 mnuUp(data->menu); | |
2644 break; | |
2645 case KCD_MNUDOWN: /* highlight next entry */ | |
2646 mnuDown(data->menu); | |
2647 break; | |
2648 case KCD_LEFT: /* activate this entry */ | |
2649 mnuSelect(data->menu); | |
2650 break; | |
2651 case KCD_HUP: /* back to previous menu */ | |
2652 case KCD_RIGHT: /* back to previous menu */ | |
2653 mnuEscape(data->menu); | |
2654 break; | |
2655 default: /* no response to all other keys */ | |
2656 return MFW_EVENT_CONSUMED; | |
2657 } | |
2658 } | |
2659 return MFW_EVENT_CONSUMED; | |
2660 } | |
2661 | |
2662 /******************************************************************************* | |
2663 | |
2664 $Function: network_request_plnm_list | |
2665 | |
2666 $Description: Request existing network list in Mobile | |
2667 | |
2668 $Returns: | |
2669 | |
2670 $Arguments: | |
2671 | |
2672 | |
2673 *******************************************************************************/ | |
2674 static int network_request_plnm_list(MfwMnu* m, MfwMnuItem* i) | |
2675 { | |
2676 T_MFW_HND win = mfwParent(mfw_header()); | |
2677 /* T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; */ /* Warning Correction */ | |
2678 /* T_network_OPT * data = (T_network_OPT *)win_data->user; */ /* Warning Correction */ | |
2679 T_DISPLAY_DATA display_info; | |
2680 | |
2681 TRACE_FUNCTION("network_request_plnm_list"); | |
2682 | |
2683 /* SPR#2354 - SH - Display "Choose Replacement" dialogue, | |
2684 * so the function of the second list is more evident */ | |
2685 | |
2686 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtChooseReplacement1, TxtChooseReplacement2, COLOUR_STATUS_NETWORKS); | |
2687 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_request_plmn_list_cb, TWO_SECS, 0 ); | |
2688 | |
2689 info_dialog (win, &display_info); | |
2690 | |
2691 return 1; | |
2692 } | |
2693 | |
2694 /******************************************************************************* | |
2695 | |
2696 $Function: network_request_plnm_list_cb | |
2697 | |
2698 $Description: User has been advised to "choose replacement", now display the list! | |
2699 | |
2700 $Returns: None | |
2701 | |
2702 $Arguments: Usual info dialogue callback arguments. | |
2703 | |
2704 *******************************************************************************/ | |
2705 | |
2706 static void network_request_plmn_list_cb(T_MFW_HND win, USHORT identifier, UBYTE reason) | |
2707 { | |
2708 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
2709 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2710 /*SPR 2635, just alloc pointers to strings */ | |
2711 data->pplmn_longnames = (char**)ALLOC_MEMORY ((MAX_SHOW_OF_PLMN) * sizeof (char*)); | |
2712 | |
2713 if (data->pplmn_longnames NEQ 0) | |
2714 { | |
2715 //now fill up the "data->pplmn_longnames" with the PLMN list from ACI | |
2716 nm_plnm_list_longnames(data->pplmn_longnames, 1, MAX_SHOW_OF_PLMN); | |
2717 | |
2718 } | |
2719 /*SPR 2635 end*/ | |
2720 else | |
2721 { | |
2722 TRACE_EVENT("create the list failed"); | |
2723 return; | |
2724 } | |
2725 | |
2726 //show the list on the screen now | |
2727 data->network_list = network_create_mobile_list (data); | |
2728 listDisplayListMenu (data->win, data->network_list,(ListCbFunc)network_mobile_list_cb,0); | |
2729 | |
2730 return; | |
2731 } | |
2732 | |
2733 | |
2734 /******************************************************************************* | |
2735 | |
2736 $Function: network_delete | |
2737 | |
2738 $Description: | |
2739 | |
2740 $Returns: | |
2741 | |
2742 $Arguments: | |
2743 | |
2744 | |
2745 *******************************************************************************/ | |
2746 | |
2747 static int network_delete(MfwMnu* m, MfwMnuItem* i) | |
2748 { | |
2749 | |
2750 T_MFW_HND win = mfwParent(mfw_header()); | |
2751 | |
2752 TRACE_FUNCTION ("network_delete()"); | |
2753 | |
2754 #ifdef NO_ASCIIZ | |
2755 if (network_data.pplmn[network_data.Listposition].network_short.len NEQ 0 ) | |
2756 #else | |
2757 if (strlen((char *)network_data.pplmn[network_data.Listposition].network_short) NEQ 0 ) | |
2758 #endif | |
2759 { | |
2760 // if the user selected a pref. PLMN | |
2761 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
2762 //Made network_info_screen as a generic function as it can be reused to display different messgaes to the user | |
2763 //Hence need to pass the callback funtion as a parameter | |
2764 network_info_screen (win, TxtDeleted,(T_VOID_FUNC)network_delete_pref_plnm); | |
2765 } | |
2766 else | |
2767 { | |
2768 // if the user selected a empty item | |
2769 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
2770 //Made network_info_screen as a generic function as it can be reused to display different messgaes to the user | |
2771 //Hence need to pass the callback funtion as a parameter | |
2772 network_info_screen (win, TxtEmptyList,(T_VOID_FUNC)network_delete_pref_plnm); | |
2773 } | |
2774 | |
2775 // destroy the Menu | |
2776 network_MNU_destroy(win); | |
2777 | |
2778 /* Warning Correction - BEGIN */ | |
2779 return 1; | |
2780 /* END */ | |
2781 | |
2782 | |
2783 } | |
2784 | |
2785 /******************************************************************************* | |
2786 | |
2787 $Function: network_delete_pref_plnm | |
2788 | |
2789 $Description: Delete the selected pref. PLMN l | |
2790 | |
2791 $Returns: | |
2792 | |
2793 $Arguments: | |
2794 | |
2795 | |
2796 *******************************************************************************/ | |
2797 void network_delete_pref_plnm (T_MFW_HND win , USHORT identifier, UBYTE reason) | |
2798 { | |
2799 | |
2800 T_MFW_PPLMN_MODE mode; | |
2801 UBYTE i; | |
2802 /* T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; */ /* Warning Correction */ | |
2803 /* T_network_OPT * data = (T_network_OPT *)win_data->user; */ /* Warning Correction */ | |
2804 | |
2805 TRACE_FUNCTION ("network_delete_pref_plnm()"); | |
2806 | |
2807 | |
2808 mode = DELETE_PREF_PLMN; /* Delete an entry from the list */ | |
2809 | |
2810 //update now the pref. PLMN list | |
2811 //(network_data.Listposition) "+1" because the zero is counted as well | |
2812 nm_change_pref_plmn(mode, (network_data.Listposition) +1 , 0, 0); | |
2813 | |
2814 // clear all the PLMN and fill up with updated list | |
2815 for (i=0; i < network_data.pplmn_mem.maxRcd; i++) | |
2816 { | |
2817 | |
2818 #ifdef NO_ASCIIZ | |
2819 network_data.pplmn[i].network_long.len = 0; | |
2820 network_data.pplmn[i].network_short.len = 0; | |
2821 #else | |
2822 memset(network_data.pplmn[i].network_long, '\0', LONG_NAME); | |
2823 memset(network_data.pplmn[i].network_short, '\0', SHORT_NAME); | |
2824 #endif | |
2825 memset(network_data.pplmn[i].network_numeric, '\0', NUMERIC_LENGTH); | |
2826 } | |
2827 | |
2828 | |
2829 // request the updated pref. PLMN list | |
2830 nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1); | |
2831 | |
2832 } | |
2833 | |
2834 /******************************************************************************* | |
2835 | |
2836 $Function: network_info_screen | |
2837 | |
2838 $Description: confirm the deleted PLMN | |
2839 | |
2840 $Returns: | |
2841 | |
2842 $Arguments: | |
2843 | |
2844 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
2845 //Made this as a generic function so that it can be reused to display different messgaes to the user | |
2846 //Added the call back function pointer as the argument. | |
2847 *******************************************************************************/ | |
2848 void network_info_screen (T_MFW_HND win, USHORT MessageId, T_VOID_FUNC funt_ptr ) | |
2849 { | |
2850 T_DISPLAY_DATA display_info; | |
2851 | |
2852 TRACE_FUNCTION ("network_info_screen()"); | |
2853 | |
2854 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, MessageId, TxtNull, COLOUR_STATUS_NETWORKS); | |
2855 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)funt_ptr, THREE_SECS, 0 ); | |
2856 | |
2857 info_dialog (win, &display_info); | |
2858 } | |
2859 | |
2860 | |
2861 /******************************************************************************* | |
2862 | |
2863 $Function: network_OPT_EDT_start | |
2864 | |
2865 $Description: | |
2866 | |
2867 $Returns: | |
2868 | |
2869 $Arguments: | |
2870 | |
2871 *******************************************************************************/ | |
2872 T_MFW_HND network_EDT_start (MfwMnu* m, MfwMnuItem* i) | |
2873 { | |
2874 T_MFW_HND win; | |
2875 T_MFW_HND parent_window = mfwParent(mfw_header()); | |
2876 | |
2877 TRACE_FUNCTION ("network_OPT_EDT_start()"); | |
2878 | |
2879 win = network_EDT_create (parent_window); | |
2880 | |
2881 if (win NEQ NULL) | |
2882 { | |
2883 SEND_EVENT (win, E_INIT, 0, 0); | |
2884 } | |
2885 return win; | |
2886 } | |
2887 | |
2888 /******************************************************************************* | |
2889 | |
2890 $Function: network_OPT_EDT_create | |
2891 | |
2892 $Description: | |
2893 | |
2894 $Returns: | |
2895 | |
2896 $Arguments: | |
2897 | |
2898 *******************************************************************************/ | |
2899 static T_MFW_HND network_EDT_create(MfwHnd parent_window) | |
2900 { | |
2901 T_network_OPT * data = (T_network_OPT *)ALLOC_MEMORY (sizeof (T_network_OPT)); | |
2902 T_MFW_WIN * win; | |
2903 | |
2904 TRACE_FUNCTION ("network_EDT_create()"); | |
2905 | |
2906 /* | |
2907 * Create window handler | |
2908 */ | |
2909 | |
2910 data->win = win_create (parent_window, 0, 0, NULL); | |
2911 | |
2912 if (data->win EQ NULL) | |
2913 { | |
2914 return NULL; | |
2915 } | |
2916 | |
2917 /* | |
2918 * connect the dialog data to the MFW-window | |
2919 */ | |
2920 | |
2921 data->mmi_control.dialog = (T_DIALOG_FUNC)network_EDT_exec_cb; | |
2922 data->mmi_control.data = data; | |
2923 win = ((T_MFW_HDR *)data->win)->data; | |
2924 win->user = (void *)data; | |
2925 data->parent = parent_window; | |
2926 | |
2927 /* | |
2928 * return window handle | |
2929 */ | |
2930 | |
2931 winShow(data->win); | |
2932 return data->win; | |
2933 } | |
2934 | |
2935 | |
2936 /******************************************************************************* | |
2937 | |
2938 $Function: network_EDT_destroy | |
2939 | |
2940 $Description: | |
2941 | |
2942 $Returns: | |
2943 | |
2944 $Arguments: | |
2945 | |
2946 *******************************************************************************/ | |
2947 static void network_EDT_destroy(MfwHnd own_window) | |
2948 { | |
2949 T_MFW_WIN * win_data; | |
2950 T_network_OPT * data; | |
2951 | |
2952 | |
2953 TRACE_FUNCTION ("networkT_EDT_destroy()"); | |
2954 | |
2955 if (own_window) | |
2956 { | |
2957 win_data = ((T_MFW_HDR *)own_window)->data; | |
2958 data = (T_network_OPT *)win_data->user; | |
2959 | |
2960 if (data) | |
2961 { | |
2962 /* | |
2963 * Delete WIN handler | |
2964 */ | |
2965 win_delete (data->win); | |
2966 | |
2967 /* | |
2968 * Free Memory | |
2969 */ | |
2970 FREE_MEMORY ((void *)data, sizeof (T_network_OPT)); | |
2971 } | |
2972 else | |
2973 { | |
2974 TRACE_EVENT ("network_EDT_destroy() called twice"); | |
2975 } | |
2976 } | |
2977 } | |
2978 | |
2979 | |
2980 /******************************************************************************* | |
2981 | |
2982 $Function: network_EDT_exec_cb | |
2983 | |
2984 $Description: | |
2985 | |
2986 $Returns: | |
2987 | |
2988 $Arguments: | |
2989 | |
2990 *******************************************************************************/ | |
2991 void network_EDT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) | |
2992 { | |
2993 T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; | |
2994 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
2995 /* T_MFW_HND * l_parent; */ /* Warning Correction */ | |
2996 /* SHORT l_id; */ /* Warning Correction */ | |
2997 /* int index; */ /* Warning Correction */ | |
2998 | |
2999 TRACE_FUNCTION ("network_EDT_exec_cb()"); | |
3000 | |
3001 switch (event) | |
3002 { | |
3003 case E_INIT: | |
3004 /* SPR#1428 - SH - New Editor changes */ | |
3005 #ifdef NEW_EDITOR | |
3006 AUI_edit_SetDefault(&data->editor_info); | |
3007 AUI_edit_SetDisplay(&data->editor_info, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT); | |
3008 AUI_edit_SetEvents(&data->editor_info, value, TRUE, FOREVER, (T_AUI_EDIT_CB)network_EDT_editor_cb); | |
3009 AUI_edit_SetTextStr(&data->editor_info, TxtSoftOK, TxtDelete, TxtMCCMNC, NULL); | |
3010 AUI_edit_SetMode(&data->editor_info, 0, ED_CURSOR_UNDERLINE); | |
3011 AUI_edit_SetAltTextStr(&data->editor_info, 5, TxtNull, TRUE, TxtSoftBack); | |
3012 AUI_edit_SetBuffer(&data->editor_info, ATB_DCS_ASCII, (UBYTE *)data->buffer, 6); | |
3013 | |
3014 AUI_edit_Start(data->win, &data->editor_info); | |
3015 #else /* NEW_EDITOR */ | |
3016 data->editor_info.editor_attr.win.px = 6; | |
3017 data->editor_info.editor_attr.win.py = /*12*/Mmi_layout_line(2); | |
3018 data->editor_info.editor_attr.win.sx = /*80*/SCREEN_SIZE_X; | |
3019 data->editor_info.editor_attr.win.sy = /*20 */Mmi_layout_line_height()*2; | |
3020 data->editor_info.editor_attr.edtCol = COLOUR_EDITOR_XX; | |
3021 data->editor_info.editor_attr.font = 0; | |
3022 data->editor_info.editor_attr.mode = edtCurBar1; | |
3023 data->editor_info.editor_attr.controls = 0; | |
3024 data->editor_info.editor_attr.text = data->buffer; /* buffer to be edited */ | |
3025 data->editor_info.editor_attr.size = 6; | |
3026 data->editor_info.LeftSoftKey = TxtSoftOK; | |
3027 data->editor_info.RightSoftKey = TxtDelete; | |
3028 data->editor_info.TextId = TxtMCCMNC; | |
3029 data->editor_info.Identifier = value; /* optional */ | |
3030 data->editor_info.mode = DIGITS_MODE; | |
3031 data->editor_info.Callback = (T_EDIT_CB)network_EDT_editor_cb; | |
3032 data->editor_info.destroyEditor = TRUE; | |
3033 data->editor_info.hide = FALSE; | |
3034 data->editor_info.AlternateLeftSoftKey = TxtNull; | |
3035 data->editor_info.TextString = NULL; | |
3036 data->editor_info.min_enter = 5; | |
3037 data->editor_info.timeout = FOREVER; | |
3038 | |
3039 /* create the dialog handler */ | |
3040 editor_start(data->win, &data->editor_info); /* start the editor */ | |
3041 #endif /* NEW_EDITOR */ | |
3042 | |
3043 | |
3044 break; | |
3045 case E_ABORT: | |
3046 case E_EXIT: /* defaultreaction */ | |
3047 network_EDT_destroy(data->win); | |
3048 break; | |
3049 default: | |
3050 return; | |
3051 } | |
3052 } | |
3053 | |
3054 | |
3055 /******************************************************************************* | |
3056 | |
3057 $Function: network_change_pref_plmn | |
3058 | |
3059 $Description: Populates the preffered plmn List. | |
3060 | |
3061 $Returns: | |
3062 | |
3063 $Arguments: | |
3064 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
3065 *******************************************************************************/ | |
3066 void network_change_pref_plmn (T_MFW_HND win , USHORT identifier, UBYTE reason) | |
3067 { | |
3068 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
3069 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
3070 | |
3071 nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1); | |
3072 | |
3073 } | |
3074 /******************************************************************************* | |
3075 | |
3076 $Function: network_EDT_editor_cb | |
3077 | |
3078 $Description: | |
3079 | |
3080 $Returns: | |
3081 | |
3082 $Arguments: | |
3083 | |
3084 *******************************************************************************/ | |
3085 static void network_EDT_editor_cb (T_MFW_HND win, USHORT Identifier, USHORT event) | |
3086 { | |
3087 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
3088 T_network_OPT * data = (T_network_OPT *)win_data->user; | |
3089 T_MFW_HND * l_parent; | |
3090 T_MFW_PPLMN_MODE mode; | |
3091 | |
3092 TRACE_FUNCTION ("network_EDT_editor_cb()"); | |
3093 | |
3094 | |
3095 l_parent = data->parent; | |
3096 | |
3097 switch(event) | |
3098 { | |
3099 case INFO_KCD_LEFT: | |
3100 | |
3101 mode = REPLACE_PREF_PLMN; /* Overwrite an existing entry at a given index */ | |
3102 | |
3103 //update now the pref. PLMN list | |
3104 //Overwrite an existing entry | |
3105 //(network_data.Listposition) "+1" because the zero is counted as well | |
3106 nm_change_pref_plmn(mode, (network_data.Listposition) +1 , 0, (UBYTE*) data->buffer); | |
3107 | |
3108 // destroy the Editor | |
3109 network_EDT_destroy(data->win); | |
3110 // xrashmic 10 Nov, 2004 MMI-SPR-OMAPS00044200-OMAPS00044851 | |
3111 //Added this info screen so that sim is updated by nm_change_pref_plmn with the new code | |
3112 //before populating the new list with nm_pref_plmn_list | |
3113 network_info_screen (win, TxtPleaseWait,(T_VOID_FUNC)network_change_pref_plmn); | |
3114 // destroy the MENU | |
3115 network_MNU_destroy(l_parent); | |
3116 break; | |
3117 case INFO_KCD_RIGHT: | |
3118 case INFO_KCD_HUP: | |
3119 // destroy the Editor | |
3120 network_EDT_destroy(data->win); | |
3121 // destroy the MENU | |
3122 network_MNU_destroy(l_parent); | |
3123 | |
3124 // Nov 02, 2005 REF: omaps00044855 Sumanth Kumar.C | |
3125 // Solution: Free network_data.pplmn. | |
3126 FREE_MEMORY ((UBYTE *)network_data.pplmn,(network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_NETWORK_STRUCT)); | |
3127 | |
3128 break; | |
3129 default: | |
3130 break; | |
3131 } | |
3132 return; | |
3133 } | |
3134 | |
3135 |