FreeCalypso > hg > tcs211-c139
comparison g23m/condat/ms/src/bmi/mmiSatClassE.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: MMI | |
15 $File: MmiSatClassE.c | |
16 $Revision: 1.0 | |
17 | |
18 $Author: Condat(UK) | |
19 $Date: 13/03/03 | |
20 | |
21 ******************************************************************************** | |
22 | |
23 Description: Contains the implementation of SAT Class E | |
24 | |
25 | |
26 | |
27 ******************************************************************************** | |
28 | |
29 $History: MmiSatClassE.c | |
30 | |
31 13/03/03 Original Condat(UK) BMI version. | |
32 | |
33 $End | |
34 | |
35 *******************************************************************************/ | |
36 | |
37 #define ENTITY_MFW | |
38 | |
39 /* includes */ | |
40 #include <string.h> | |
41 #include <stdio.h> | |
42 #include <stdlib.h> | |
43 | |
44 #if defined (NEW_FRAME) | |
45 | |
46 #include "typedefs.h" | |
47 #include "vsi.h" | |
48 #include "pei.h" | |
49 #include "custom.h" | |
50 #include "gsm.h" | |
51 | |
52 #else | |
53 | |
54 #include "STDDEFS.H" | |
55 #include "custom.h" | |
56 #include "gsm.h" | |
57 #include "vsi.h" | |
58 | |
59 #endif /* (NEW_FRAME) */ | |
60 | |
61 #include "pconst.cdg" | |
62 #include "mconst.cdg" | |
63 #include "message.h" | |
64 #include "ccdapi.h" | |
65 #include "prim.h" | |
66 #include "cus_aci.h" | |
67 #include "cnf_aci.h" | |
68 #include "mon_aci.h" | |
69 | |
70 #include "tok.h" | |
71 | |
72 #include "prim.h" | |
73 #ifndef PCM_2_FFS | |
74 #include "pcm.h" | |
75 #endif | |
76 | |
77 | |
78 #include "mfw_mfw.h" | |
79 #include "mfw_kbd.h" | |
80 #include "mfw_tim.h" | |
81 #include "mfw_lng.h" | |
82 #include "mfw_win.h" | |
83 #include "mfw_icn.h" | |
84 #include "mfw_sim.h" | |
85 #include "mfw_nm.h" | |
86 /* SPR#1428 - SH - New Editor changes */ | |
87 #ifndef NEW_EDITOR | |
88 #include "mfw_edt.h" | |
89 #endif /* NEW_EDITOR */ | |
90 #include "mfw_mnu.h" | |
91 #include "mfw_phb.h" | |
92 #include "mfw_sms.h" | |
93 | |
94 #include "dspl.h" | |
95 | |
96 | |
97 #include "p_mmi.h" | |
98 #include "message.h" | |
99 #include "prim.h" | |
100 #include "aci_cmh.h" | |
101 #include "mfw_mme.h" | |
102 | |
103 #include "MmiMmi.h" | |
104 | |
105 #include "Mmiicons.h" | |
106 #include "MmiPins.h" | |
107 #include "MmiMain.h" | |
108 #include "MmiDialogs.h" | |
109 #include "MmiIdle.h" | |
110 #include "MmiStart.h" | |
111 #include "mmiCall.h" | |
112 #include "MmiSimToolkit.h" | |
113 #include "gdi.h" | |
114 #include "audio.h" | |
115 #include "MmiLists.h" | |
116 #include "MmiSounds.h" | |
117 #include "MmiResources.h" | |
118 #include "MmiTimeDate.h" | |
119 #include "mmiSat_i.h" | |
120 /* SPR#1428 - SH - New Editor changes */ | |
121 #ifdef NEW_EDITOR | |
122 #include "ATBCommon.h" | |
123 #include "ATBDisplay.h" | |
124 #include "ATBEditor.h" | |
125 #include "AUIEditor.h" | |
126 #else | |
127 #include "MmiEditor.h" | |
128 #endif /* NEW_EDITOR */ | |
129 #include "MmiMenu.h" // SH - 20/11/01 - included to provide symbol SimMenuFunc | |
130 #include "mmiSmsRead.h" /*MC SPR 940/2*/ | |
131 | |
132 #include "cus_aci.h" | |
133 #include "prim.h" | |
134 #include "pcm.h" | |
135 | |
136 #include "mmiSatClassE.h" | |
137 #include "mmiColours.h" | |
138 | |
139 typedef struct | |
140 { | |
141 T_MMI_CONTROL mmi_control; | |
142 T_MFW_HND parent_win; | |
143 T_MFW_HND win; | |
144 T_SAT_CMD *sat_command; /* pointer to sat_command in parent */ | |
145 char * alpha_id; | |
146 } T_sat_open_channel; | |
147 | |
148 | |
149 /* Local function prototypes */ | |
150 static void sat_open_channel_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); | |
151 static void sat_class_e_dialog_destroy(T_MFW_HND win); | |
152 static void sat_class_e_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); | |
153 | |
154 /******************************************************************************* | |
155 | |
156 $Function: sat_class_e_create | |
157 | |
158 $Description: Creation of an instance for the SAT Class E dialog. | |
159 | |
160 $Returns: mfw window handler | |
161 | |
162 $Arguments: parent_window - Parent window handler | |
163 | |
164 *******************************************************************************/ | |
165 T_MFW_HND sat_class_e_create (T_MFW_HND parent_window) | |
166 { | |
167 T_sat_open_channel * data = (T_sat_open_channel *)ALLOC_MEMORY (sizeof (T_sat_open_channel)); | |
168 T_MFW_WIN * win; | |
169 | |
170 TRACE_FUNCTION("sat_open_channel_create()"); | |
171 | |
172 if (data != NULL) | |
173 { | |
174 data->win = win_create (parent_window, 0, 0,NULL); | |
175 } | |
176 else | |
177 { | |
178 TRACE_ERROR("Error: Cannot allocate memory for data!"); | |
179 } | |
180 | |
181 if (data->win EQ NULL) | |
182 return NULL; | |
183 | |
184 /* | |
185 * Create window handler | |
186 */ | |
187 data->mmi_control.dialog = (T_DIALOG_FUNC)sat_class_e_exec; | |
188 data->mmi_control.data = data; | |
189 data->parent_win = parent_window; | |
190 win = ((T_MFW_HDR *)data->win)->data; | |
191 win->user = (MfwUserDataPtr)data; | |
192 | |
193 /* | |
194 * return window handle | |
195 */ | |
196 winShow(data->win); | |
197 return data->win; | |
198 } | |
199 | |
200 /******************************************************************************* | |
201 | |
202 $Function: sat_open_channel_cb | |
203 | |
204 $Description: Callback for accept/reject dialog. | |
205 $Returns: None. | |
206 | |
207 $Arguments: win: current window | |
208 identifier: unique id | |
209 reason: event id | |
210 | |
211 *******************************************************************************/ | |
212 static void sat_open_channel_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) | |
213 { | |
214 TRACE_FUNCTION("sat_open_channel_cb()"); | |
215 | |
216 if (win EQ NULL) | |
217 { | |
218 return; | |
219 } | |
220 | |
221 switch (reason) | |
222 { | |
223 case INFO_KCD_LEFT: /* user has accepted Open Channel request */ | |
224 satAccept(); | |
225 | |
226 /* Destroy the dialog */ | |
227 sat_class_e_dialog_destroy(win); | |
228 break; | |
229 case INFO_KCD_RIGHT: /* user has rejected Open Channel request */ | |
230 satReject(); | |
231 | |
232 /* Destroy the dialog */ | |
233 sat_class_e_dialog_destroy(win); | |
234 break; | |
235 default: | |
236 break; | |
237 } | |
238 } | |
239 | |
240 /******************************************************************************* | |
241 | |
242 $Function: sat_class_e_dialog_destroy | |
243 | |
244 $Description: Close the alert dialog | |
245 | |
246 $Returns: None. | |
247 | |
248 $Arguments: alert_dialog: window handle. | |
249 | |
250 *******************************************************************************/ | |
251 static void sat_class_e_dialog_destroy(T_MFW_HND win) | |
252 { | |
253 | |
254 T_MFW_WIN * win_data; | |
255 T_sat_open_channel * data; | |
256 | |
257 TRACE_FUNCTION ("sat_class_e_dialog_destroy()"); | |
258 | |
259 if (win == NULL) | |
260 { | |
261 TRACE_ERROR("ERROR: win is NULL!"); | |
262 return; | |
263 } | |
264 | |
265 win_data = ((T_MFW_HDR *)win)->data; | |
266 | |
267 if (win_data == NULL) | |
268 { | |
269 TRACE_ERROR("ERROR: win_data is NULL!"); | |
270 return; | |
271 } | |
272 | |
273 data = (T_sat_open_channel *)win_data->user; | |
274 | |
275 if (win != NULL) | |
276 { | |
277 if (data) | |
278 { | |
279 /* | |
280 * Delete WIN Handler | |
281 */ | |
282 win_delete (data->win); | |
283 /* | |
284 * Free Memory | |
285 */ | |
286 sat_destroy_TEXT_ASCIIZ (data->alpha_id); | |
287 FREE_MEMORY ((U8 *)data, sizeof (T_sat_open_channel)); | |
288 } | |
289 } | |
290 } | |
291 | |
292 /******************************************************************************* | |
293 | |
294 $Function: sat_class_e_cb | |
295 | |
296 $Description: Callback for Sat Class E dialogs. | |
297 $Returns: None. | |
298 | |
299 $Arguments: win: current window | |
300 identifier: unique id | |
301 reason: event id | |
302 | |
303 *******************************************************************************/ | |
304 static void sat_class_e_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) | |
305 { | |
306 TRACE_FUNCTION("sat_class_e_cb()"); | |
307 | |
308 if (win EQ NULL) | |
309 { | |
310 return; | |
311 } | |
312 | |
313 switch (reason) | |
314 { | |
315 case INFO_KCD_LEFT: | |
316 case INFO_KCD_RIGHT: | |
317 case INFO_TIMEOUT: | |
318 | |
319 /* Destroy the dialog */ | |
320 sat_class_e_dialog_destroy(win); | |
321 break; | |
322 default: | |
323 break; | |
324 } | |
325 } | |
326 | |
327 /******************************************************************************* | |
328 | |
329 $Function: sat_class_e_exec | |
330 | |
331 $Description: Dialog function for Sat Class E window. | |
332 | |
333 $Returns: none | |
334 | |
335 $Arguments: win - current window | |
336 event - window event | |
337 value - unique id | |
338 call_setup_parameter - call setup info | |
339 | |
340 SPR#2321 - DS - Corrected misleading comments. | |
341 | |
342 *******************************************************************************/ | |
343 void sat_class_e_exec (T_MFW_HND win, USHORT event, SHORT value, T_SAT_CMD * sat_command) | |
344 { | |
345 | |
346 T_MFW_WIN * win_data; | |
347 T_sat_open_channel * data; | |
348 char* text_string; | |
349 | |
350 T_DISPLAY_DATA display_info; | |
351 | |
352 TRACE_FUNCTION ("sat_class_e_exec()"); | |
353 | |
354 if (win == NULL) | |
355 { | |
356 TRACE_ERROR("ERROR: win is NULL!"); | |
357 return; | |
358 } | |
359 | |
360 win_data = ((T_MFW_HDR *)win)->data; | |
361 | |
362 if (win_data == NULL) | |
363 { | |
364 TRACE_ERROR("ERROR: win_data is NULL!"); | |
365 return; | |
366 } | |
367 | |
368 data = (T_sat_open_channel *)win_data->user; | |
369 | |
370 if (data == NULL) | |
371 { | |
372 TRACE_ERROR("ERROR: data is NULL!"); | |
373 return; | |
374 } | |
375 | |
376 switch (event) | |
377 { | |
378 case SAT_OPEN_CHANNEL: | |
379 | |
380 TRACE_EVENT("SAT_OPEN_CHANNEL"); | |
381 | |
382 /* Start an info screen to accept or reject the Open Channel request */ | |
383 data->sat_command = sat_command; | |
384 | |
385 /* Extract the data from the Open Channel sat command */ | |
386 if (sat_command != NULL) | |
387 { | |
388 | |
389 TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.open.alpha_id.code, sat_command->c.open.alpha_id.len); | |
390 | |
391 /* Alpha identifier */ | |
392 | |
393 /* Check alpha identifier has valid length */ | |
394 if ( (sat_command->c.open.alpha_id.len > 0) && | |
395 (sat_command->c.open.alpha_id.len != (U8)-1) ) | |
396 { | |
397 /* Extract alpha_id data and create string */ | |
398 data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.open.alpha_id); | |
399 } | |
400 else | |
401 { | |
402 data->alpha_id = NULL; | |
403 } | |
404 } | |
405 else | |
406 { | |
407 TRACE_ERROR("ERROR: NULL sat_command!"); | |
408 } | |
409 | |
410 if (data->alpha_id) | |
411 { | |
412 text_string = data->alpha_id; | |
413 #ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/ | |
414 sat_add_unicode_tag_if_needed(text_string); | |
415 #endif | |
416 } | |
417 else | |
418 { | |
419 text_string = "Open Channel"; //Need to implement for Chinese | |
420 } | |
421 | |
422 | |
423 dlg_initDisplayData_TextStr( &display_info, TxtAccept, TxtReject, text_string, NULL, COLOUR_STATUS); | |
424 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_open_channel_cb, FOREVER, KEY_LEFT|KEY_RIGHT ); | |
425 | |
426 display_info.Identifier = event; | |
427 | |
428 /* | |
429 * Call Info Screen | |
430 */ | |
431 info_dialog (win, &display_info); | |
432 | |
433 break; | |
434 | |
435 case SAT_CLOSE_CHANNEL: | |
436 | |
437 TRACE_EVENT("SAT_CLOSE_CHANNEL"); | |
438 | |
439 /* Start an info screen to inform the user that the SIM is closing the open channel*/ | |
440 data->sat_command = sat_command; | |
441 | |
442 /* Extract the data from the Close Channel sat command */ | |
443 if (sat_command != NULL) | |
444 { | |
445 TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.close.alpha_id.code, sat_command->c.close.alpha_id.len); | |
446 | |
447 /* Alpha identifier */ | |
448 | |
449 /* SPR#2321 - DS - Check alpha identifier has valid length */ | |
450 if ( (sat_command->c.close.alpha_id.len > 0) && | |
451 (sat_command->c.close.alpha_id.len != (U8)-1) ) | |
452 { | |
453 /* Extract alpha_id data and create string */ | |
454 data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.close.alpha_id); | |
455 } | |
456 else | |
457 { | |
458 data->alpha_id = NULL; | |
459 } | |
460 } | |
461 | |
462 if (data->alpha_id) | |
463 { | |
464 text_string = data->alpha_id; | |
465 #ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/ | |
466 sat_add_unicode_tag_if_needed(text_string); | |
467 #endif | |
468 } | |
469 else | |
470 { | |
471 text_string = "Closing Channel"; //Need to implement for Chinese | |
472 } | |
473 | |
474 | |
475 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS); | |
476 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT ); | |
477 | |
478 display_info.Identifier = event; | |
479 | |
480 /* | |
481 * Call Info Screen | |
482 */ | |
483 info_dialog (win, &display_info); | |
484 | |
485 break; | |
486 | |
487 case SAT_SEND_DATA: | |
488 | |
489 TRACE_EVENT("SAT_SEND_DATA"); | |
490 | |
491 /* Start an info screen to inform the user that the SIM is sending data */ | |
492 data->sat_command = sat_command; | |
493 | |
494 /* Extract the data from the Send Data sat command */ | |
495 if (sat_command != NULL) | |
496 { | |
497 TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.send.alpha_id.code, sat_command->c.send.alpha_id.len); | |
498 | |
499 /* Alpha identifier */ | |
500 | |
501 /* SPR#2321 - DS - Check alpha identifier has valid length */ | |
502 if ( (sat_command->c.send.alpha_id.len > 0) && | |
503 (sat_command->c.send.alpha_id.len != (U8)-1) ) | |
504 { | |
505 /* Extract alpha_id data and create string */ | |
506 data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.send.alpha_id); | |
507 } | |
508 else | |
509 { | |
510 data->alpha_id = NULL; | |
511 } | |
512 } | |
513 | |
514 if (data->alpha_id) | |
515 { | |
516 text_string = data->alpha_id; | |
517 #ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/ | |
518 sat_add_unicode_tag_if_needed(text_string); | |
519 #endif | |
520 } | |
521 else | |
522 { | |
523 text_string = "Sending Data"; //Need to implement for Chinese | |
524 } | |
525 | |
526 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS); | |
527 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT ); | |
528 | |
529 display_info.Identifier = event; | |
530 | |
531 /* | |
532 * Call Info Screen | |
533 */ | |
534 info_dialog (win, &display_info); | |
535 | |
536 break; | |
537 | |
538 case SAT_RECEIVE_DATA: | |
539 | |
540 TRACE_EVENT("SAT_RECEIVE_DATA"); | |
541 | |
542 /* Start an info screen to inform the user that the SIM is receiving data */ | |
543 data->sat_command = sat_command; | |
544 | |
545 /* Extract the data from the Receive Data sat command */ | |
546 if (sat_command != NULL) | |
547 { | |
548 TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.receive.alpha_id.code, sat_command->c.receive.alpha_id.len); | |
549 | |
550 /* Alpha identifier */ | |
551 | |
552 /* SPR#2321 - DS - Check alpha identifier has valid length */ | |
553 if ( (sat_command->c.receive.alpha_id.len > 0) && | |
554 (sat_command->c.receive.alpha_id.len != (U8)-1) ) | |
555 { | |
556 /* Extract alpha_id data and create string */ | |
557 data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.receive.alpha_id); | |
558 } | |
559 else | |
560 { | |
561 data->alpha_id = NULL; | |
562 } | |
563 } | |
564 | |
565 if (data->alpha_id) | |
566 { | |
567 text_string = data->alpha_id; | |
568 #ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/ | |
569 sat_add_unicode_tag_if_needed(text_string); | |
570 #endif | |
571 } | |
572 else | |
573 { | |
574 text_string = "Receiving Data"; //Need to implement for Chinese | |
575 } | |
576 | |
577 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS); | |
578 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT ); | |
579 | |
580 display_info.Identifier = event; | |
581 | |
582 /* | |
583 * Call Info Screen | |
584 */ | |
585 info_dialog (win, &display_info); | |
586 | |
587 break; | |
588 | |
589 default: | |
590 TRACE_EVENT("sat_open_channel_exec() unexpected event"); | |
591 return; | |
592 } | |
593 | |
594 } | |
595 | |
596 /* EOF - End Of File */ |