FreeCalypso > hg > fc-magnetite
comparison src/aci2/bmi/MmiVoiceMemo.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:c41a534f33c6 | 3:93999a60b835 |
---|---|
1 /******************************************************************************* | |
2 | |
3 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: VOICEMEMO | |
15 $File: MmiVoiceMemo.c | |
16 $Revision: 1.0 | |
17 | |
18 $Author: Condat(UK) | |
19 $Date: 09/04/01 | |
20 | |
21 ******************************************************************************** | |
22 | |
23 Description: | |
24 | |
25 This provides the start code for the MMI | |
26 | |
27 ******************************************************************************** | |
28 $History: MmiVoiceMemo.c | |
29 | |
30 09/04/01 Original Condat(UK) BMI version. | |
31 | |
32 $End | |
33 | |
34 *******************************************************************************/ | |
35 | |
36 | |
37 | |
38 | |
39 /******************************************************************************* | |
40 | |
41 Include files | |
42 | |
43 *******************************************************************************/ | |
44 #define ENTITY_MFW | |
45 | |
46 /* includes */ | |
47 #include <string.h> | |
48 #include <stdio.h> | |
49 #include <stdlib.h> | |
50 | |
51 #include "typedefs.h" | |
52 #include "vsi.h" | |
53 #include "pei.h" | |
54 #include "custom.h" | |
55 #include "gsm.h" | |
56 | |
57 #include "mfw_sys.h" | |
58 | |
59 #include "prim.h" | |
60 | |
61 #include "cus_aci.h" | |
62 | |
63 #include "mfw_mfw.h" | |
64 #include "mfw_win.h" | |
65 #include "mfw_kbd.h" | |
66 /* SPR#1428 - SH - New Editor changes */ | |
67 #ifndef NEW_EDITOR | |
68 #include "mfw_edt.h" | |
69 #endif | |
70 #include "mfw_lng.h" | |
71 #include "mfw_tim.h" | |
72 #include "mfw_icn.h" | |
73 #include "mfw_mnu.h" | |
74 #include "mfw_phb.h" | |
75 #include "mfw_cm.h" | |
76 #include "mfw_sim.h" | |
77 #include "mfw_nm.h" | |
78 #include "mfw_sat.h" | |
79 #include "mfw_phb.h" | |
80 #include "ksd.h" | |
81 #include "psa.h" | |
82 #include "mfw_sms.h" | |
83 #include "mfw_cphs.h" | |
84 #include "mfw_sat.h" | |
85 | |
86 #include "dspl.h" | |
87 | |
88 | |
89 #include "MmiMmi.h" | |
90 #include "MmiDummy.h" | |
91 #include "MmiDialogs.h" | |
92 #include "MmiLists.h" | |
93 #include "MmiIdle.h" | |
94 #include "MmiSoftKeys.h" | |
95 #include "Mmiicons.h" | |
96 #include "MmiMenu.h" | |
97 #include "MmiMain.h" | |
98 #include "MmiStart.h" | |
99 #include "MmiPins.h" | |
100 #include "MmiSettings.h" | |
101 | |
102 #include "gdi.h" | |
103 #include "audio.h" | |
104 #include "MmiSounds.h" | |
105 #include "MmiResources.h" | |
106 #include "mmiColours.h" | |
107 | |
108 //#include "vmd.h" | |
109 #include "MmiVoiceMemo.h" | |
110 #include "mfw_ffs.h" | |
111 | |
112 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
113 #ifndef NEPTUNE_BOARD | |
114 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
115 #include "Audio/audio_api.h" | |
116 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
117 #endif /* NEPTUNE_BOARD*/ | |
118 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
119 | |
120 #include "mfw_aud.h" | |
121 | |
122 /******************************************************************************* | |
123 | |
124 internal data | |
125 | |
126 *******************************************************************************/ | |
127 | |
128 /* | |
129 * Internal events | |
130 */ | |
131 #define VM_INIT 500 | |
132 #define VM_DESTROY 501 | |
133 #define VM_PLAY 502 | |
134 #define VM_RECORD 503 | |
135 #define VM_DELETE_BUFFER 504 | |
136 | |
137 #define VOICE_MEMO_MAX_DURATION 10 // 10 Secs | |
138 | |
139 | |
140 typedef struct | |
141 { | |
142 T_MMI_CONTROL mmi_control; | |
143 T_MFW_HND parent_win; | |
144 T_MFW_HND info_win; | |
145 T_MFW_HND info_tim; | |
146 T_MFW_HND info_kbd; | |
147 USHORT Identifier; | |
148 USHORT time; | |
149 char elapsed_time[7]; | |
150 int play_sk2; | |
151 } T_voice_memo; | |
152 | |
153 | |
154 | |
155 | |
156 /******************************************************************************* | |
157 | |
158 Local prototypes | |
159 | |
160 *******************************************************************************/ | |
161 | |
162 | |
163 T_MFW_HND voice_memo_start (T_MFW_HND parent_win, SHORT ID); | |
164 static T_MFW_HND voice_memo_create (T_MFW_HND parent_win); | |
165 static void voice_memo_destroy (T_MFW_HND own_window); | |
166 static void voice_memo (T_MFW_HND win, USHORT event, SHORT value, void * parameter); | |
167 static int voice_memo_win_cb (T_MFW_EVENT event, T_MFW_WIN * win); | |
168 static T_MFW_CB voice_memo_tim_cb (T_MFW_EVENT event, T_MFW_TIM * tc); | |
169 static int voice_memo_kbd_cb (T_MFW_EVENT event, T_MFW_KBD * keyboard); | |
170 static void voice_memo_dialog_create(T_MFW_HND win, int str1, int str2); | |
171 void voice_memo_dialog_cb (T_MFW_HND win, UBYTE identifier, UBYTE reason); | |
172 | |
173 /* | |
174 ** Rivera Callback functions | |
175 */ | |
176 static void voice_memo_riv_record_cb(void *parameter); | |
177 static void voice_memo_riv_play_cb(void *parameter); | |
178 | |
179 | |
180 | |
181 /******************************************************************************* | |
182 | |
183 $Function: voice_memo_init | |
184 | |
185 $Description: | |
186 | |
187 $Returns: | |
188 | |
189 $Arguments: | |
190 | |
191 *******************************************************************************/ | |
192 GLOBAL void voice_memo_init (void) | |
193 { | |
194 TRACE_FUNCTION ("voice_memo_init()"); | |
195 } | |
196 | |
197 /******************************************************************************* | |
198 | |
199 $Function: voice_memo_exit | |
200 | |
201 $Description: | |
202 | |
203 | |
204 $Returns: | |
205 | |
206 $Arguments: | |
207 | |
208 *******************************************************************************/ | |
209 GLOBAL void voice_memo_exit (void) | |
210 { | |
211 TRACE_FUNCTION ("voice_memo_exit()"); | |
212 | |
213 } | |
214 | |
215 | |
216 | |
217 | |
218 /******************************************************************************* | |
219 | |
220 $Function: voice_memo_play | |
221 | |
222 $Description: | |
223 | |
224 $Returns: | |
225 | |
226 $Arguments: | |
227 | |
228 *******************************************************************************/ | |
229 GLOBAL int voice_memo_play (MfwMnu* m, MfwMnuItem* i) | |
230 { | |
231 T_MFW_HND win = mfw_parent(mfw_header()); | |
232 | |
233 TRACE_FUNCTION ("voice_memo_play()"); | |
234 | |
235 //create a new voice memo dialog | |
236 voice_memo_start (win, VM_PLAY); | |
237 return 1; // ADDED BY RAVI - 29-11-2005 | |
238 } | |
239 | |
240 | |
241 | |
242 /******************************************************************************* | |
243 | |
244 $Function: voice_memo_record | |
245 | |
246 $Description: | |
247 | |
248 | |
249 $Returns: | |
250 | |
251 $Arguments: | |
252 | |
253 *******************************************************************************/ | |
254 GLOBAL int voice_memo_record (MfwMnu* m, MfwMnuItem* i) | |
255 { | |
256 | |
257 T_MFW_HND win = mfw_parent(mfw_header()); | |
258 | |
259 | |
260 TRACE_FUNCTION ("voice_memo_record()"); | |
261 | |
262 //create a new voice memo dialog | |
263 voice_memo_start (win, VM_RECORD); | |
264 return 1; // RAVI - 29-11-2005 | |
265 } | |
266 | |
267 | |
268 /******************************************************************************* | |
269 | |
270 $Function: voice_memo_start | |
271 | |
272 $Description: create a new voicememo dialog | |
273 | |
274 $Returns: Dialogue info win | |
275 | |
276 $Arguments: parent win, display info | |
277 | |
278 *******************************************************************************/ | |
279 T_MFW_HND voice_memo_start (T_MFW_HND parent_win, SHORT ID) | |
280 { | |
281 T_MFW_HND win; | |
282 | |
283 win = voice_memo_create (parent_win); | |
284 | |
285 if (win NEQ NULL) | |
286 { | |
287 SEND_EVENT (win, VM_INIT, ID, 0); | |
288 } | |
289 return win; | |
290 } | |
291 | |
292 | |
293 | |
294 /******************************************************************************* | |
295 | |
296 $Function: vocie_memo_create | |
297 | |
298 $Description: Creation of window | |
299 | |
300 $Returns: Dialogue info win | |
301 | |
302 $Arguments: parent win | |
303 | |
304 *******************************************************************************/ | |
305 static T_MFW_HND voice_memo_create (T_MFW_HND parent_win) | |
306 { | |
307 T_MFW_WIN * win_data; | |
308 T_voice_memo * data = (T_voice_memo *)ALLOC_MEMORY (sizeof (T_voice_memo)); | |
309 | |
310 TRACE_FUNCTION ("vocie_memo_create()"); | |
311 | |
312 data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)voice_memo_win_cb); | |
313 | |
314 if (data->info_win EQ 0) | |
315 return 0; | |
316 | |
317 /* | |
318 * Create window handler | |
319 */ | |
320 data->mmi_control.dialog = (T_DIALOG_FUNC)voice_memo; | |
321 data->mmi_control.data = data; | |
322 data->parent_win = parent_win; | |
323 win_data = ((T_MFW_HDR *)data->info_win)->data; | |
324 win_data->user = (void *)data; | |
325 | |
326 /* | |
327 ** Initialise values to safe defualts | |
328 */ | |
329 data->play_sk2 = TxtSoftBack; | |
330 | |
331 /* | |
332 * return window handle | |
333 */ | |
334 return data->info_win; | |
335 } | |
336 | |
337 | |
338 /******************************************************************************* | |
339 | |
340 $Function: voice_memo_destroy | |
341 | |
342 $Description: Destruction of an dialog | |
343 | |
344 $Returns: void | |
345 | |
346 $Arguments: win | |
347 | |
348 *******************************************************************************/ | |
349 void voice_memo_destroy (T_MFW_HND own_window) | |
350 { | |
351 T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data; | |
352 T_voice_memo * data = (T_voice_memo *)win->user; | |
353 | |
354 TRACE_FUNCTION ("voice_memo_destroy()"); | |
355 | |
356 if (own_window == NULL) | |
357 { | |
358 TRACE_EVENT ("Error : Called with NULL Pointer"); | |
359 return; | |
360 } | |
361 | |
362 if (data) | |
363 { | |
364 /* | |
365 * Exit TIMER & KEYBOARD Handle | |
366 */ | |
367 kbd_delete (data->info_kbd); | |
368 tim_delete (data->info_tim); | |
369 | |
370 /* | |
371 * Delete WIN Handler | |
372 */ | |
373 win_delete (data->info_win); | |
374 /* | |
375 * Free Memory | |
376 */ | |
377 FREE_MEMORY ((void *)data, sizeof (T_voice_memo)); | |
378 } | |
379 } | |
380 | |
381 | |
382 | |
383 /******************************************************************************* | |
384 | |
385 $Function: voice_memo | |
386 | |
387 $Description: Dialog function for voice memo dialog | |
388 | |
389 $Returns: void | |
390 | |
391 $Arguments: win, window handle event, value, parameter | |
392 | |
393 *******************************************************************************/ | |
394 void voice_memo (T_MFW_HND win, USHORT event, SHORT value, void * parameter) | |
395 { | |
396 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
397 T_voice_memo * data = (T_voice_memo *)win_data->user; | |
398 | |
399 // T_DISPLAY_DATA display_info; // RAVI | |
400 | |
401 SHORT mfw_aud_retVal; | |
402 | |
403 data->Identifier = value; | |
404 | |
405 TRACE_FUNCTION ("voice_memo()"); | |
406 | |
407 switch (event) | |
408 { | |
409 case VM_INIT: | |
410 TRACE_EVENT ("VM_INIT()"); | |
411 /* | |
412 * Initialize dialog | |
413 */ | |
414 | |
415 /* | |
416 * Create timer and keyboard handler | |
417 */ | |
418 data->info_tim = tim_create (win, 1000, (T_MFW_CB)voice_memo_tim_cb); | |
419 data->info_kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)voice_memo_kbd_cb); | |
420 | |
421 | |
422 if (value EQ VM_PLAY) | |
423 { | |
424 TRACE_EVENT ("VM_PLAY()"); | |
425 | |
426 mfw_aud_retVal = mfw_aud_vm_start_playback(voice_memo_riv_play_cb); | |
427 | |
428 if (mfw_aud_retVal == MFW_AUD_VM_OK) | |
429 { | |
430 //start the second timer | |
431 data->time = 0; | |
432 tim_start (data->info_tim); | |
433 | |
434 //Set the Right Softkey Id | |
435 data->play_sk2 = TxtStop; | |
436 } | |
437 else | |
438 { | |
439 if (mfw_aud_retVal == MFW_AUD_VM_MEM_EMPTY) | |
440 { | |
441 voice_memo_dialog_create(win, TxtRecording, TxtEmpty); | |
442 } | |
443 else | |
444 { | |
445 //Display a dialog and exit | |
446 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_start_playback failed with return value : %d", mfw_aud_retVal); | |
447 | |
448 voice_memo_dialog_create( win, TxtPlayback, TxtFailed); | |
449 } | |
450 } | |
451 } | |
452 else if (value EQ VM_RECORD) | |
453 { | |
454 TRACE_FUNCTION ("VM_RECORD()"); | |
455 | |
456 mfw_aud_retVal = mfw_aud_vm_start_record(VOICE_MEMO_MAX_DURATION, voice_memo_riv_record_cb); | |
457 | |
458 // If the Riviera call failed | |
459 if (mfw_aud_retVal == MFW_AUD_VM_OK) | |
460 { | |
461 //start the second timer | |
462 data->time = 0; | |
463 tim_start (data->info_tim); | |
464 } | |
465 else | |
466 { | |
467 if (mfw_aud_retVal == MFW_AUD_VM_MEM_FULL) | |
468 { | |
469 TRACE_EVENT ("memory full "); | |
470 /* RAVI - 20-1-2006 */ | |
471 /* Silent Implementation */ | |
472 #ifdef NEPTUNE_BOARD | |
473 audio_PlaySoundID(0, TONES_KEYBEEP, getCurrentVoulmeSettings(), | |
474 AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ | |
475 #else | |
476 /* play Keybeep */ | |
477 audio_PlaySoundID(0, TONES_KEYBEEP, 200, AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ | |
478 #endif | |
479 /* END RAVI */ | |
480 | |
481 voice_memo_dialog_create( win, TxtRecording, TxtFull ); | |
482 } | |
483 else | |
484 { | |
485 //Display a dialog and exit | |
486 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_start_record failed with return value : %d", mfw_aud_retVal); | |
487 | |
488 voice_memo_dialog_create( win, TxtRecording, TxtFailed ); | |
489 } | |
490 } | |
491 } | |
492 win_show (win); | |
493 break; | |
494 | |
495 | |
496 //if the user selected to clear the Voicememo buffer | |
497 case VM_DELETE_BUFFER: | |
498 voice_memo_dialog_create( win, TxtDeleted, TxtNull ); | |
499 | |
500 /* | |
501 ** Delete the voice memo file | |
502 */ | |
503 mfw_aud_vm_delete_file(); | |
504 break; | |
505 | |
506 case VM_DESTROY: | |
507 voice_memo_destroy(win); | |
508 break; | |
509 } | |
510 } | |
511 | |
512 /******************************************************************************* | |
513 | |
514 $Function: voice_memo_win_cb | |
515 | |
516 $Description: Callback function for information dialog | |
517 | |
518 $Returns: void | |
519 | |
520 $Arguments: window handle event, win | |
521 *******************************************************************************/ | |
522 static int voice_memo_win_cb (T_MFW_EVENT event, T_MFW_WIN * win) | |
523 { | |
524 T_voice_memo * data = (T_voice_memo *)win->user; | |
525 | |
526 TRACE_FUNCTION ("voice_memo_win_cb()"); | |
527 | |
528 if (data EQ 0) | |
529 return 1; | |
530 | |
531 switch (event) | |
532 { | |
533 case E_WIN_VISIBLE: | |
534 if (win->flags & E_WIN_VISIBLE) | |
535 { | |
536 /* | |
537 * Clear Screen | |
538 */ | |
539 dspl_ClearAll(); | |
540 | |
541 switch (data->Identifier) | |
542 { | |
543 case VM_PLAY: | |
544 /* | |
545 * Print the information screen | |
546 */ | |
547 ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayback); | |
548 | |
549 /* | |
550 * Print the elapsed time | |
551 */ | |
552 displayAlignedText(LEFT, Mmi_layout_line(2), 0, data->elapsed_time); | |
553 | |
554 /* | |
555 * Print softkeys | |
556 */ | |
557 displaySoftKeys(TxtDelete, data->play_sk2); | |
558 break; | |
559 | |
560 case VM_RECORD: | |
561 /* | |
562 * Print the information screen | |
563 */ | |
564 ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtRecording); | |
565 | |
566 /* | |
567 * Print the elapsed time | |
568 */ | |
569 displayAlignedText(LEFT, Mmi_layout_line(2), 0, data->elapsed_time); | |
570 | |
571 /* | |
572 * Print softkeys | |
573 */ | |
574 displaySoftKeys(TxtStop, '\0'); | |
575 break; | |
576 } | |
577 | |
578 } | |
579 break; | |
580 | |
581 default: | |
582 return 0; | |
583 } | |
584 return 1; | |
585 } | |
586 | |
587 | |
588 /******************************************************************************* | |
589 | |
590 $Function: voice_memo_tim_cb | |
591 | |
592 $Description: Callback function for the voice_memo timer. | |
593 | |
594 | |
595 $Returns: MFW event handler | |
596 | |
597 $Arguments: window handle event, timer control block | |
598 | |
599 *******************************************************************************/ | |
600 static T_MFW_CB voice_memo_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc) | |
601 { | |
602 T_MFW_HND win = mfw_parent (mfw_header()); | |
603 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
604 T_voice_memo * data = (T_voice_memo *)win_data->user; | |
605 | |
606 SHORT mfw_aud_retVal; | |
607 | |
608 // char buf[40]; // RAVI | |
609 | |
610 TRACE_FUNCTION ("voice_memo_tim_cb()"); | |
611 | |
612 switch (data->Identifier) | |
613 { | |
614 case VM_PLAY: | |
615 //the max. playback time is 10 second | |
616 if (data->time < mfw_aud_vm_get_duration()) | |
617 { | |
618 TRACE_EVENT ("continue the second timer"); | |
619 | |
620 data->time ++; | |
621 // it shows here the elapsed time | |
622 sprintf(data->elapsed_time,"%02d sec", data->time); | |
623 | |
624 TRACE_EVENT (data->elapsed_time); | |
625 | |
626 //continue the second timer | |
627 tim_start (data->info_tim); | |
628 } | |
629 else | |
630 { | |
631 data->play_sk2 = TxtSoftBack; | |
632 #ifndef _SIMULATION_ | |
633 /* | |
634 ** Stop playing the Voice Memo. | |
635 */ | |
636 mfw_aud_retVal = mfw_aud_vm_stop_playback(voice_memo_riv_play_cb); | |
637 | |
638 if (mfw_aud_retVal != MFW_AUD_VM_OK) | |
639 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_stop_playback failed with return value : %d", mfw_aud_retVal); | |
640 #else | |
641 TRACE_EVENT("call mfw_aud_vm_stop_playback()"); | |
642 #endif | |
643 } | |
644 break; | |
645 | |
646 | |
647 case VM_RECORD: | |
648 | |
649 data->time++; | |
650 | |
651 if (data->time < VOICE_MEMO_MAX_DURATION) | |
652 { | |
653 TRACE_EVENT ("continue the second timer"); | |
654 | |
655 // it shows here the remainig time | |
656 sprintf(data->elapsed_time,"%02d sec", (VOICE_MEMO_MAX_DURATION - data->time)); | |
657 | |
658 TRACE_EVENT (data->elapsed_time); | |
659 | |
660 //continue the second timer | |
661 tim_start (data->info_tim); | |
662 } | |
663 else | |
664 { | |
665 mfw_aud_vm_set_duration(VOICE_MEMO_MAX_DURATION); | |
666 | |
667 #ifndef _SIMULATION_ | |
668 /* | |
669 ** Stop recording the Voice Memo. | |
670 */ | |
671 mfw_aud_retVal = mfw_aud_vm_stop_record(voice_memo_riv_record_cb); | |
672 | |
673 if (mfw_aud_retVal != MFW_AUD_VM_OK) | |
674 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_stop_record failed with return value : %d", mfw_aud_retVal); | |
675 /* RAVI - 20-1-2006 */ | |
676 #ifdef NEPTUNE_BOARD | |
677 audio_PlaySoundID(0, TONES_KEYBEEP, getCurrentVoulmeSettings(), | |
678 AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ | |
679 #else | |
680 /*the voice memo is now full, show "memory full" */ | |
681 audio_PlaySoundID(0, TONES_KEYBEEP, 200, AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ | |
682 #endif | |
683 /* END RAVI */ | |
684 | |
685 voice_memo_dialog_create( win, TxtRecording, TxtFull ); | |
686 #else | |
687 TRACE_EVENT("call mfw_aud_vm_stop_record()"); | |
688 #endif | |
689 } | |
690 break; | |
691 } | |
692 | |
693 //Update the screen | |
694 winShow(win); | |
695 | |
696 return 0; | |
697 } | |
698 | |
699 | |
700 /******************************************************************************* | |
701 | |
702 $Function: voice_memo_kbd_cb | |
703 | |
704 $Description: Keyboard event handler | |
705 | |
706 $Returns: status int | |
707 | |
708 $Arguments: window handle event, keyboard control block | |
709 | |
710 *******************************************************************************/ | |
711 | |
712 static int voice_memo_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard) | |
713 { | |
714 T_MFW_HND win = mfw_parent (mfw_header()); | |
715 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
716 T_voice_memo * data = (T_voice_memo *)win_data->user; | |
717 | |
718 USHORT Identifier = data->Identifier; | |
719 SHORT mfw_aud_retVal; | |
720 | |
721 | |
722 TRACE_FUNCTION("voice_memo_kbd_cb"); | |
723 | |
724 switch (keyboard->code) | |
725 { | |
726 case KCD_HUP: | |
727 case KCD_LEFT: | |
728 if (Identifier EQ VM_PLAY) | |
729 { | |
730 #ifndef _SIMULATION_ | |
731 /* | |
732 ** Stop playing the Voice Memo and Delete it. | |
733 */ | |
734 mfw_aud_retVal = mfw_aud_vm_stop_playback(voice_memo_riv_play_cb); | |
735 | |
736 if (mfw_aud_retVal != MFW_AUD_VM_OK) | |
737 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_stop_playback failed with return value : %d", mfw_aud_retVal); | |
738 #else | |
739 TRACE_EVENT("call mfw_aud_vm_stop_playback()"); | |
740 #endif | |
741 //delete the voicememo buffer | |
742 mfw_aud_vm_set_duration(0); | |
743 | |
744 //user selected the delete-key | |
745 SEND_EVENT (win, VM_DELETE_BUFFER, 0, 0); | |
746 } | |
747 else if (Identifier EQ VM_RECORD) | |
748 { | |
749 mfw_aud_vm_set_duration(data->time); | |
750 | |
751 #ifndef _SIMULATION_ | |
752 /* | |
753 ** Stop recording the Voice Memo. | |
754 */ | |
755 mfw_aud_retVal = mfw_aud_vm_stop_record(voice_memo_riv_record_cb); | |
756 | |
757 if (mfw_aud_retVal != MFW_AUD_VM_OK) | |
758 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_stop_record failed with return value : %d", mfw_aud_retVal); | |
759 | |
760 //go back to the previous dialog | |
761 SEND_EVENT (win, VM_DESTROY, 0, 0); | |
762 #else | |
763 TRACE_EVENT("call mfw_aud_vm_stop_record()"); | |
764 #endif | |
765 } | |
766 break; | |
767 | |
768 case KCD_RIGHT: | |
769 if (Identifier EQ VM_PLAY) | |
770 { | |
771 | |
772 #ifndef _SIMULATION_ | |
773 /* | |
774 ** Stop playing the Voice Memo. | |
775 */ | |
776 mfw_aud_retVal = mfw_aud_vm_stop_playback(voice_memo_riv_play_cb); | |
777 | |
778 if (mfw_aud_retVal != MFW_AUD_VM_OK) | |
779 TRACE_EVENT_P1 ("ERROR : mfw_aud_vm_stop_playback failed with return value : %d", mfw_aud_retVal); | |
780 #else | |
781 TRACE_EVENT("call mfw_aud_vm_stop_playback()"); | |
782 #endif | |
783 | |
784 //go back to the previous dialog | |
785 SEND_EVENT (win, VM_DESTROY, 0, 0); | |
786 } | |
787 else if (Identifier EQ VM_RECORD) | |
788 { | |
789 //nothing | |
790 } | |
791 break; | |
792 | |
793 default: | |
794 break; | |
795 } | |
796 return MFW_EVENT_CONSUMED; | |
797 } | |
798 | |
799 | |
800 /******************************************************************************* | |
801 | |
802 $Function: voice_memo_dialog_cb | |
803 | |
804 $Description: | |
805 | |
806 $Returns: | |
807 | |
808 $Arguments: | |
809 | |
810 *******************************************************************************/ | |
811 void voice_memo_dialog_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) | |
812 { | |
813 TRACE_FUNCTION ("voice_memo_dialog_cb()"); | |
814 | |
815 switch (reason) | |
816 { | |
817 case INFO_KCD_LEFT: | |
818 /* no break; */ | |
819 case INFO_TIMEOUT: | |
820 /* no break; */ | |
821 case INFO_KCD_HUP: | |
822 /* no break; */ | |
823 case INFO_KCD_RIGHT: | |
824 /* no break; */ | |
825 case INFO_KCD_CLEAR: | |
826 | |
827 //go back to the previous dialog | |
828 SEND_EVENT (win, VM_DESTROY,0, 0); | |
829 | |
830 break; | |
831 } | |
832 } | |
833 | |
834 | |
835 /******************************************************************************* | |
836 | |
837 $Function: voice_memo_dialog_create | |
838 | |
839 $Description: | |
840 | |
841 $Returns: | |
842 | |
843 $Arguments: | |
844 | |
845 *******************************************************************************/ | |
846 static void voice_memo_dialog_create(T_MFW_HND win, int str1, int str2) | |
847 { | |
848 T_DISPLAY_DATA display_info; | |
849 | |
850 TRACE_FUNCTION ("voice_memo_dialog_create()"); | |
851 | |
852 dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); | |
853 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)voice_memo_dialog_cb, THREE_SECS, KEY_CLEAR | KEY_RIGHT | KEY_LEFT ); | |
854 /* | |
855 * Call Info Screen | |
856 */ | |
857 info_dialog (win, &display_info); | |
858 } | |
859 | |
860 static void voice_memo_riv_record_cb(void *parameter) | |
861 { | |
862 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
863 #ifndef NEPTUNE_BOARD | |
864 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
865 | |
866 T_AUDIO_VM_RECORD_STATUS *record_status; | |
867 | |
868 record_status = (T_AUDIO_VM_RECORD_STATUS *)parameter; | |
869 | |
870 if (record_status->status != AUDIO_OK) | |
871 { | |
872 TRACE_EVENT_P1("ERROR : voice_memo_riv_play_cb received AUDIO_ERROR, recorded duration is %d", | |
873 record_status->recorded_duration); | |
874 } | |
875 else | |
876 { | |
877 TRACE_EVENT_P1("INFO : voice_memo_riv_play_cb received AUDIO_OK, recorded duration is %d", | |
878 record_status->recorded_duration); | |
879 | |
880 mfw_aud_vm_set_duration((UINT8)record_status->recorded_duration); | |
881 } | |
882 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
883 #endif /* NEPTUNE_BOARD */ | |
884 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
885 | |
886 } | |
887 | |
888 static void voice_memo_riv_play_cb(void *parameter) | |
889 { | |
890 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
891 #ifndef NEPTUNE_BOARD | |
892 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
893 | |
894 T_AUDIO_VM_PLAY_STATUS *play_status; | |
895 | |
896 play_status = (T_AUDIO_VM_PLAY_STATUS *)parameter; | |
897 | |
898 if (play_status->status != AUDIO_OK) | |
899 { | |
900 TRACE_EVENT("ERROR : voice_memo_riv_play_cb received AUDIO_ERROR"); | |
901 } | |
902 else | |
903 { | |
904 TRACE_EVENT("INFO : voice_memo_riv_play_cb received AUDIO_OK"); | |
905 } | |
906 /* BEGIN ADD: Req ID: : Sumit : 14-Mar-05 */ | |
907 #endif /* NEPTUNE_BOARD*/ | |
908 /* END ADD: Req ID: : Sumit : 14-Mar-05 */ | |
909 | |
910 } | |
911 | |
912 |