comparison src/ui/mfw/mfw_mme.c @ 3:67bfe9f274f6

src/ui: import of src/ui3 from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:33:10 +0000
parents
children 7c7fe9d0ea7c
comparison
equal deleted inserted replaced
2:3a14ee9a9843 3:67bfe9f274f6
1 /*
2 +--------------------------------------------------------------------+
3 | PROJECT: MMI-Framework (8417) $Workfile:: mfw_mme.c $|
4 | $Author:: Kk $ CONDAT GmbH $Revision:: 5 $|
5 | CREATED: 11.02.99 $Modtime:: 3.03.00 17:40 $|
6 | STATE : code |
7 +--------------------------------------------------------------------+
8
9 MODULE : MFW_MME
10
11 PURPOSE : Miscelleaneous Mobile Equipment functions
12
13 EXPORT :
14
15 TO DO :
16
17 $History:: mfw_mme.c $
18 ************************************************************************
19
20 Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat)
21 Description: Support from MMI to configure drives (NOR, NORMS, NAND, TFLASH)
22 is added as part of SBuild 2.3.0 Migration
23
24 May 30, 2007 DR: OMAPS00132483 x0pleela
25 Description: MM: While playing an AAC, unplug USB freezes the audio
26 Solution: 1. Added the prototype to get the phone lock status
27 2. Replaced the function call mfw_get_phlock_status with mfw_get_Phlock_status
28 to get the phone lock status
29
30 Apr 03, 2007 ER: OMAPS00122561 x0pleela
31 Description: [ACI] Phone lock feature has to be supported by ACI
32 Solution: Phone Lock ER implementation
33
34
35 Mar 22, 2007 DVT: OMAPS00121916 x0039928(sumanth)
36 Description: T-Flash hot swap.
37
38 Oct 30 2006, OMAPS00098881 x0039928(sumanth)
39 Removal of power variant
40
41 Oct 05, 2006 ER: OMAPS00094496 x0061088(Prachi)
42 Description:Enhance RSSI to 3 parameters: Strength, quality, min-access-level
43 Solution:To solve the ER OMAPS0094496,mmeInit() is not calling rx_Init().
44
45
46 xashmic 27 Sep 2006, OMAPS00096389
47 ENH - a) Providing static menu for re-selection of enum options for enumeration
48 b) Popup menu displayed on connect event, can be enabled or disabled via menu option
49
50 xashmic 21 Sep 2006, OMAPS00095831
51 Description: USB enumeration does not happen in PIN/PUK/Insert SIM scenarios
52 Solution: When booting up without SIM card, or prompting for PIN/PUK/SIMP entry,
53 enumerate all the USB ports automatically
54
55 xashmic 9 Sep 2006, OMAPS00092732
56 USBMS ER
57 *
58 * Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth)
59 * Description: Triton PG2.2 impacts on Locosto program
60 * Solution: Software workaround is done to register headset-hook dynamically
61 * during/before call is established and unregister it after the call is ended/disconnected.
62 *
63 * xdeepadh, nekkareb - OMAPS00076996: 05 May 2006
64 * Description: MO TTY call works only for the first time
65 * Solution: For the Loocsto-lite variant, when a TTY call is initiated, the
66 * current audio profile is identified and when the TTY call is ended, this
67 * profile is loaded.
68 *
69 * nekkareb - OMAPS00057367: 8 Dec 2005
70 * Description: Fix build problems for fix of OMAPS00057367
71 * Solution: Included OMAPS00057367 changes under a flag ISAMPLE
72 *
73 * nekkareb - OMAPS00057367: 3 Dec 2005
74 * Description: Locosto: TTY MT call does not work
75 * Solution: Extra TTY command added so as to initiate the AUDIO entity to send the
76 * TTY_START request to L1 only after the Vocoder enable is sent.
77 * Current audio device is read from audio service entity functions.
78 *
79 * xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
80 * Description: Support for various audio profiles
81 * Solution: The support for audio device's carkit/headset/loudspeaker/handheld.
82 * The audio device is enabled as per the user actions.
83 *
84 * ***************** Version 5 ********************************************
85 * User: Kk Date: 3.03.00 Time: 17:52
86 * Updated in $/GSM/Condat/MS/SRC/MFW
87 *
88 * ***************** Version 4 *****************
89 * User: Es Date: 2.03.00 Time: 16:48
90 * Updated in $/GSM/Condat/MS/SRC/MFW
91 * generate battery/signal primitives with more info from driver
92 * callbacks. Catch the primitives on reception and call MMI event
93 * handler. Don't use ACI any longer for this purpose.
94 *
95 * ***************** Version 3 *****************
96 * User: Es Date: 14.04.99 Time: 17:34
97 * Updated in $/GSM/DEV/MS/SRC/MFW
98 * moved to CST
99 |
100 | ***************** Version 2 *****************
101 | User: Le Date: 14.04.99 Time: 9:51
102 | Updated in $/GSM/DEV/MS/SRC/MFW
103 *
104 * ***************** Version 1 *****************
105 * User: Es Date: 20.02.99 Time: 11:54
106 * Created in $/GSM/DEV/MS/SRC/MFW
107 * mobile equipment
108 */
109
110 #define ENTITY_MFW
111
112 #include <stdio.h>
113
114 #if defined (NEW_FRAME)
115
116 #include "typedefs.h"
117 #include "vsi.h"
118 #include "custom.h"
119 #include "gsm.h"
120
121 #else
122
123 #include "STDDEFS.H"
124 #include "custom.h"
125 #include "gsm.h"
126 #include "vsi.h"
127
128 #endif
129
130 #include "mfw_mfw.h"
131 #include "mfw_sys.h"
132 #include "prim.h"
133 #include "message.h"
134 #include "prim.h"
135 #include "aci_cmh.h"
136 #include "gdi.h"
137 #include "audio.h"
138 #include "pwr.h"
139 #include "rx.h"
140 #include "light.h"
141 #include "mfw_acie.h"
142 #include "mfw_mme.h"
143 #include "mfw_win.h"
144 #include "mfw_ffs.h" /*OMAPS00098881 x0039928(sumanth)*/
145 //xashmic 9 Sep 2006, OMAPS00092732
146 #ifdef FF_MMI_USBMS
147 #include "usb/usb_api.h"
148 #endif
149
150 //x0pleela 01 Apr, 2007 ER: OMAPS00122561
151 #ifdef FF_PHONE_LOCK
152 #include "mfw_sim.h"
153 #endif //FF_PHONE_LOCK
154
155 /* OMAPS00057367, 8 Dec 2005, nekkare, build fix */
156 #if (BOARD == 71)
157 #define ISAMPLE
158 #endif
159
160 #define hCommPL _ENTITY_PREFIXED(hCommPL)
161 #define hCommACI _ENTITY_PREFIXED(hCommACI)
162
163 #if defined (NEW_FRAME)
164 EXTERN T_HANDLE hCommPL;
165 EXTERN T_HANDLE hCommACI;
166 #else
167 EXTERN T_VSI_CHANDLE hCommPL;
168 EXTERN T_VSI_CHANDLE hCommACI;
169 #endif
170
171 EXTERN MfwHdr * current_mfw_elem;
172
173 /* FLAG DRIVER CALLBACKS */
174 #define MmeFlagRtcAlarm 1 /* rtc alarm */
175 #define MmeFlagHdsDetect 2 /* headset detection */
176 #define MmeFlagIrdaMsg 4 /* IRDA event */
177 U16 mfwMmeDrvFlag = 0; /* hold driver CB flags */
178
179 static U8 battLevel = 0; /* battery level */
180 static U8 battState = 0; /* state of power supply */
181 static U16 hdsPresence = 0; /* headset presence */
182
183
184 static int mmeCommand (U32 cmd, void *h);
185
186 /* driver callbacks */
187 static void pwrCb (drv_SignalID_Type *signal_params);
188 static void rxCb (drv_SignalID_Type *signal_params);
189 static void rtcCb (drv_SignalID_Type *signal_params);
190
191 /* Added to remove warning Aug - 11 */
192 EXTERN UBYTE dspl_Enable (UBYTE in_Enable);
193 /* End - remove warning Aug - 11 */
194
195 static BOOL mmePrimHandler (USHORT opc, void *data);
196 static int pSlot; /* primitive handler slot */
197 #ifndef FF_MMI_AUDIO_PROFILE /*a0393213 warnings removal*/
198 static void hdsCb (drv_SignalID_Type *signal_params);
199 #endif
200 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
201 #ifdef FF_MMI_AUDIO_PROFILE
202 #define HANDHELD "handheld" //0
203 #define LOUDSPEAKER "handfree" // 1
204 #define HEADSET "headset" // 2
205 #define CARKIT "carkit" // 3
206 static UBYTE currAudioDevice = MFW_AUD_HANDHELD;
207
208 UBYTE headsetInserted = FALSE; //indicates if the headset is inserted or not
209 UBYTE carkitInserted = FALSE; //indicates if the carkit is inserted or not
210 UBYTE mfwAudPlay = FALSE; //indicates if any other audio media is being played or not
211 extern audio_set_device(char* mode);
212 // Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth)
213 // Fix: A callback function is added that is registered for hook.
214 void mfw_audio_hook_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
215 ACCESSORY_CALLBACK_PARAM callbackparam );
216 void mfw_audio_headSet_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
217 ACCESSORY_CALLBACK_PARAM callbackparam );
218 void mfw_audio_carKit_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
219 ACCESSORY_CALLBACK_PARAM callbackparam );
220 #endif
221
222 /* Mar 22, 2007 DVT: OMAPS00121916 x0039928 */
223 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- Start */
224 #ifdef FF_MMI_TFLASH
225 void tflash_notify_register(void);
226 typedef void (*T_MC_EVENT_CALLBACK)(T_MC_EVENT mcEvent, void *ctx);
227 #endif
228 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- End */
229
230 void mfw_audio_set_device(int type);
231 //xdeepadh, nekkareb - OMAPS00076996: 05 May 2006
232 //Array to retrieve the profile name
233 #ifdef MMI_LITE
234 char aud_cg_file[5][15] = {"handheld","handheld","handfree","headset","carkit"};
235 #endif
236
237 //x0pleela 29 May, 2007 DR: OMAPS00132483
238 #ifdef FF_PHONE_LOCK
239 EXTERN int mfw_get_Phlock_status(void);
240 #endif // FF_PHONE_LOCK
241
242 /* Mar 22, 2007 DVT: OMAPS00121916 x0039928 */
243 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- Start */
244 #ifdef FF_MMI_TFLASH
245 void tflash_cb(T_MC_EVENT mcEvent, void *ctx)
246 {
247 PALLOC(tflash_mmi_ind, TFLASH_MMI_IND);
248 tflash_mmi_ind->mc_status = mcEvent;
249 PSENDX(ACI,tflash_mmi_ind);
250 }
251 #endif
252 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- End */
253
254 //xashmic 9 Sep 2006, OMAPS00092732
255 #ifdef FF_MMI_USBMS
256 /*
257 +--------------------------------------------------------------------+
258 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
259 | STATE : code ROUTINE : usbms_cb |
260 +--------------------------------------------------------------------+
261
262 PURPOSE : Posts the USB events to the MMI task
263
264 */
265
266 void usbms_cb (T_USB_EVENT usbEvent, void *ctx)
267 {
268 PALLOC(usbms_mmi_ind,USBMS_MMI_IND);
269 usbms_mmi_ind->usb_status = (U8)usbEvent;
270 PSENDX(ACI,usbms_mmi_ind);
271 }
272
273
274
275
276 /*
277 +--------------------------------------------------------------------+
278 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
279 | STATE : code ROUTINE : mfw_usbms_init |
280 +--------------------------------------------------------------------+
281
282 PURPOSE : Registers a callback for USB connect/disconnect events
283
284 */
285 void mfw_usbms_init(void)
286 {
287 T_USB_RETURN ret;
288 TRACE_FUNCTION("mfw_usbms_init");
289 ret = usb_register_notifcation( (T_USB_EVENT_CALLBACK)usbms_cb,NULL);
290 switch(ret)
291 {
292 case USB_NOT_SUPPORTED :
293 TRACE_ERROR("USB registeration unsuccessful- Not supported");
294 break;
295 case USB_MEMORY_ERR:
296 TRACE_ERROR("USB registeration unsuccessful - Memeory error");
297 break;
298 case USB_INTERNAL_ERR:
299 TRACE_ERROR("USB registeration unsuccessful - Internal error");
300 break;
301 case USB_OK:
302 TRACE_EVENT("USB registeration successful");
303 break;
304 }
305 }
306
307 /*
308 +--------------------------------------------------------------------+
309 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
310 | STATE : code ROUTINE : mfw_usbms_enum_control |
311 +--------------------------------------------------------------------+
312
313 PURPOSE : Continues or abandons the enumeration based on user selection
314
315 */
316 void mfw_usbms_enum_control(T_MFW_USB_ENUM_CONTROL usbms_enum_status, T_MFW_USB_ENUM_TYPE usb_enum_type)
317 {
318 T_USB_ENUM_INFO enumInfo;
319 T_USB_RETURN ret;
320 TRACE_FUNCTION("mfw_usbms_enum_control");
321 switch(usb_enum_type)
322 {
323 case MFW_USB_TYPE_MS:
324 enumInfo.info=USB_MS;
325 break;
326 case MFW_USB_TYPE_AT:
327 enumInfo.info=USB_AT;
328 break;
329 case MFW_USB_TYPE_TRACE:
330 enumInfo.info=USB_TRACE;
331 break;
332 case MFW_USB_TYPE_AT_MS://xashmic 27 Sep 2006, OMAPS00096389
333 enumInfo.info=USB_AT|USB_MS;
334 break;
335 case MFW_USB_TYPE_AT_TRACE://xashmic 27 Sep 2006, OMAPS00096389
336 enumInfo.info=USB_AT|USB_TRACE;
337 break;
338 case MFW_USB_TYPE_MS_TRACE://xashmic 27 Sep 2006, OMAPS00096389
339 enumInfo.info=USB_MS|USB_TRACE;
340 break;
341 case MFW_USB_TYPE_ALL:
342 enumInfo.info=USB_MS| USB_AT|USB_TRACE;
343 break;
344 default:
345 TRACE_ERROR("mfw_usbms_enum_control():Invalid type");
346 return;
347 }
348 TRACE_EVENT_P1("Ports %x",enumInfo.info);
349 switch(usbms_enum_status)
350 {
351 case MFW_USB_ENUM:
352 ret=usb_enum_control(USB_ENUM,&enumInfo);
353 TRACE_EVENT_P1("mfw_usbms_enum_control:ret:%d", ret);
354 switch(ret)
355 {
356 case USB_NOT_SUPPORTED :
357 TRACE_ERROR("USB enumeration unsuccessful- Not supported");
358 break;
359 case USB_MEMORY_ERR:
360 TRACE_ERROR("USB enumeration unsuccessful - Memeory error");
361 break;
362 case USB_INTERNAL_ERR:
363 TRACE_ERROR("USB enumeration unsuccessful - Internal error");
364 break;
365 case USB_OK:
366 TRACE_EVENT("USB enumeration successful");
367 break;
368 default:
369 TRACE_ERROR("USB enumeration unsuccessful - Invalid return");
370 break;
371 }
372 break;
373 case MFW_USB_NO_ENUM:
374 ret=usb_enum_control(USB_NO_ENUM,&enumInfo);
375 switch(ret)
376 {
377 case USB_NOT_SUPPORTED :
378 TRACE_ERROR("USB no enumeration unsuccessful- Not supported");
379 break;
380 case USB_MEMORY_ERR:
381 TRACE_ERROR("USB no enumeration unsuccessful - Memeory error");
382 break;
383 case USB_INTERNAL_ERR:
384 TRACE_ERROR("USB no enumeration unsuccessful - Internal error");
385 break;
386 case USB_OK:
387 TRACE_EVENT("USB no enumeration successful");
388 break;
389 default:
390 TRACE_ERROR("USB enumeration successful - Invalid return");
391 break;
392 }
393 break;
394 }
395 }
396
397 #endif
398
399 /*
400 +--------------------------------------------------------------------+
401 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
402 | STATE : code ROUTINE : mmeInit |
403 +--------------------------------------------------------------------+
404 PURPOSE : initialize equipment handler
405 */
406 MfwRes mmeInit (void)
407 {
408 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
409 // the callback registeration variables are populated here and passed as
410 // argument to audio_init
411 #ifdef FF_MMI_AUDIO_PROFILE
412 T_ACCESSORY_CALLBACK audio_device_config[MAX_EXT_AUD_DEVICE];
413
414 audio_device_config[CALLBACK_HEADSET].callbackFunc = mfw_audio_headSet_indication;
415 audio_device_config[CALLBACK_HEADSET].callbackVal = NULL;
416 audio_device_config[CALLBACK_CARKIT].callbackFunc = mfw_audio_carKit_indication;
417 audio_device_config[CALLBACK_CARKIT].callbackVal = NULL;
418 #endif
419
420 mfwCommand[MfwTypMme] = (MfwCb) mmeCommand;
421
422 mfwMmeDrvFlag = 0;
423
424 battLevel = 0;
425 battState = 0;
426 hdsPresence = 0;
427
428
429 pwr_Init(pwrCb); //power driver
430 rx_Init(rxCb); //fieldstrength driver
431 light_Init(); //light emitting driver
432 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
433 #ifdef FF_MMI_AUDIO_PROFILE
434 audio_Init(audio_device_config);
435 #else
436 audio_Init(hdsCb); //audio driver
437 #endif
438
439 mmeBattInfo ( 10, 0);
440
441 mmeRxInfo(5,0);
442
443 /* install prim handler */
444 pSlot = aci_create((T_PRIM_HANDLER)mmePrimHandler,NULL);
445
446 //xashmic 9 Sep 2006, OMAPS00092732
447 //Registers a callback for event handling
448 #ifdef FF_MMI_USBMS
449 mfw_usbms_init();
450
451 /* Mar 22, 2007 DVT: OMAPS00121916 x0039928 */
452 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- Start */
453 #ifdef FF_MMI_TFLASH
454 tflash_notify_register();
455 #endif
456 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- End */
457
458 #endif
459
460 return MfwResOk;
461 }
462
463 /* Mar 22, 2007 DVT: OMAPS00121916 x0039928 */
464 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- Start */
465 #ifdef FF_MMI_TFLASH
466 void tflash_notify_register(void)
467 {
468 T_RV_RET result;
469
470 result = (T_RV_RET)mc_register_notifcation((T_MC_EVENT_CALLBACK)tflash_cb, NULL);
471
472 if(result == RV_OK)
473 TRACE_EVENT("TFLASH callback registration successful");
474 else
475 TRACE_ERROR("TFLASH callback registration failed");
476 }
477 #endif
478 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- End */
479
480
481 // Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth)
482 // Fix: Two new mfw hook register and unregister functions are added
483 // which call the hook register and unregister functions in audio.c file
484 #ifdef FF_MMI_AUDIO_PROFILE
485 void mfw_hook_unregister(void)
486 {
487 TRACE_FUNCTION("mfw hook unregister");
488 hook_unregister();
489 }
490
491 void mfw_hook_register(void)
492 {
493 T_ACCESSORY_CALLBACK hook_device;
494
495 TRACE_FUNCTION("mfw hook register");
496
497 hook_device.callbackVal = NULL;
498 hook_device.callbackFunc = mfw_audio_hook_indication;
499 hook_register(hook_device);
500 }
501 #endif
502
503
504
505 /*
506 +--------------------------------------------------------------------+
507 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
508 | STATE : code ROUTINE : mmeExit |
509 +--------------------------------------------------------------------+
510
511 PURPOSE : finalize equipment handler
512
513 */
514 MfwRes mmeExit (void)
515 {
516 aci_delete(pSlot); /* remove prim handler */
517 mfwCommand[MfwTypMme] = 0;
518
519 return MfwResOk;
520 }
521
522
523 /*
524 +--------------------------------------------------------------------+
525 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
526 | STATE : code ROUTINE : mmeCreate |
527 +--------------------------------------------------------------------+
528
529 PURPOSE : create equipment control
530
531 */
532
533 MfwHnd mmeCreate (MfwHnd w, MfwEvt e, MfwCb f)
534 {
535 MfwHdr *hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr));
536 MfwMme *mme = (MfwMme *) mfwAlloc(sizeof(MfwMme));
537 MfwHdr *insert_status =0;
538
539 if (!hdr || !mme)
540 {
541 TRACE_ERROR("ERROR: mmeCreate() Mem Alloc Failed.");
542
543 if(hdr)
544 mfwFree((U8*)hdr,sizeof(MfwHdr));
545 if(mme)
546 mfwFree((U8*)mme,sizeof(MfwMme));
547
548 return 0;
549 }
550
551 mme->map = e;
552 mme->handler = f;
553 mme->value = 0;
554
555 hdr->data = mme;
556 hdr->type = MfwTypMme;
557
558 insert_status = mfwInsert(w,hdr);
559
560 if(!insert_status)
561 {
562 TRACE_ERROR("ERROR: mmeCreate() Failed to Install Handler. ");
563 mfwFree((U8*)hdr,sizeof(MfwHdr));
564 mfwFree((U8*)mme ,sizeof(MfwMme));
565 return 0;
566 }
567 return insert_status;
568 }
569
570
571 /*
572 +--------------------------------------------------------------------+
573 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
574 | STATE : code ROUTINE : mmeDelete |
575 +--------------------------------------------------------------------+
576
577 PURPOSE : delete equipment control
578
579 */
580
581 MfwRes mmeDelete (MfwHnd h)
582 {
583 MfwRes res;
584
585 if (!h)
586 return MfwResIllHnd;
587
588 res = (mfwRemove(h)) ? MfwResOk : MfwResIllHnd;
589
590 mfwFree(((MfwHdr *) h)->data,sizeof(MfwMme));
591 mfwFree(h,sizeof(MfwHdr));
592
593 return res;
594 }
595
596
597 /*
598 +--------------------------------------------------------------------+
599 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
600 | STATE : code ROUTINE : mmeHdsInit |
601 +--------------------------------------------------------------------+
602
603 PURPOSE : init the Headset detection and setup callback handler
604
605 */
606
607 MfwRes mmeHdsInit (void (*hds_init) ())
608 {
609 mfwMmeDrvFlag &= ~MmeFlagHdsDetect;
610
611 return MfwResOk;/*a0393213 compiler warnings removal - 1 changed to MfwResOk*/
612 }
613
614
615 /*
616 +--------------------------------------------------------------------+
617 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
618 | STATE : code ROUTINE : mmeRtcInit |
619 +--------------------------------------------------------------------+
620
621 PURPOSE : init the RTC and setup the alarm callback handler
622
623 extern UBYTE clk_Init (USHORT, drv_SignalCB_Type, UBYTE*);
624 */
625
626 MfwRes mmeRtcInit (USHORT drvHandle, UBYTE *info)
627 {
628 mfwMmeDrvFlag &= ~MmeFlagRtcAlarm;
629
630 return MfwResOk; // RAVI /*a0393213 compiler warnings removal - 0 changed to MfwResOk*/
631 }
632
633
634 static int mme_backlightStatus[BL_LAST_OPTION];
635 /*
636 +--------------------------------------------------------------------+
637 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
638 | STATE : code ROUTINE : mme_setBacklightIdle |
639 +--------------------------------------------------------------------+
640
641 PURPOSE : called when an event may change the backlight level/status
642
643 */
644 void mme_backlightEvent(int event)
645 {
646 int light;
647 if ((event >=BL_INIT) && (event <BL_LAST_OPTION))
648 {
649 light = mme_backlightStatus[event];
650 if (light == BL_SET_IDLE)
651 {
652 light_setBacklightIdle();
653 }
654 else if (light == BL_NO_CHANGE)
655 {
656 //No change
657 }
658 else if ((light >=BL_NO_LIGHT) && (light <=BL_MAX_LIGHT))
659 {
660 mmeBackLight ((U8)light);
661 }
662
663 }
664 }
665
666 /*
667 +--------------------------------------------------------------------+
668 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
669 | STATE : code ROUTINE : mme_setBacklightIdle |
670 +--------------------------------------------------------------------+
671
672 PURPOSE : called to initialise backlight events
673
674 */
675 void mme_setBacklightEvent(int event, int lightLevel)
676 {
677 if ((event >=BL_INIT) && (event <BL_LAST_OPTION))
678 {
679 mme_backlightStatus[event] = lightLevel;
680 }
681 }
682
683
684 /*
685 +--------------------------------------------------------------------+
686 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
687 | STATE : code ROUTINE : mmeBackLight |
688 +--------------------------------------------------------------------+
689
690 PURPOSE : set display backlight
691
692 */
693 void mmeBackLight (U8 level)
694 {
695 light_SetStatus(LIGHT_DEVICE_BACKLIGHT,level);
696 }
697
698
699 /*
700 +--------------------------------------------------------------------+
701 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
702 | STATE : code ROUTINE : mmeAudioTone |
703 +--------------------------------------------------------------------+
704
705 PURPOSE : configure the buzzer
706
707 */
708
709 void mmeAudioTone (U8 callTone, U8 volume, U8 toneStat)
710 {
711 if (toneStat EQ TONE_SWT_OFF)
712 #ifdef FF_MMI_RINGTONE /* Stop MSL Play */
713 audio_StopSoundbyID(AUDIO_SPEAKER, CALLTONE_SELECT);
714 #else
715 audio_StopSoundbyID(AUDIO_SPEAKER,callTone);
716 #endif
717 else
718 #ifdef FF_MMI_RINGTONE /* Play MSL Ring tone */
719 audio_PlaySoundID(AUDIO_SPEAKER,CALLTONE_SELECT,volume,toneStat);
720 #else
721 audio_PlaySoundID(AUDIO_SPEAKER,callTone,volume,toneStat);
722 #endif
723 }
724
725
726 /*
727 +--------------------------------------------------------------------+
728 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
729 | STATE : code ROUTINE : mmeSetVolume |
730 +--------------------------------------------------------------------+
731
732 PURPOSE : configure mic and speaker volume
733
734 */
735
736 MfwRes mmeSetVolume (U16 audioIn, U16 audioOut)
737 {
738 if (audioIn > 255) audioIn = 255;
739 if (audioOut > 255) audioOut = 255;
740
741 audio_SetAmplf(AUDIO_MICROPHONE,(U8) audioIn);
742 audio_SetAmplf(AUDIO_SPEAKER,(U8) audioOut);
743
744 return MfwResOk;
745 }
746
747
748 /*
749 +--------------------------------------------------------------------+
750 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
751 | STATE : code ROUTINE : mmeRxInfo |
752 +--------------------------------------------------------------------+
753
754 PURPOSE : configure signal quality information:
755 request from the PS an indication on change of the
756 rx level with n intervalls.
757 Parameters mode and level are not used in the moment.
758
759 */
760
761 void mmeRxInfo (U8 intervalls, U16 level)
762 {
763 rx_DCB_Type rx_DCB;
764
765 rx_DCB.Steps = intervalls;
766 rx_SetConfig(&rx_DCB);
767 }
768
769
770 /*
771 +--------------------------------------------------------------------+
772 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
773 | STATE : code ROUTINE : mmeBattInfo |
774 +--------------------------------------------------------------------+
775
776 PURPOSE : configure battery level information
777
778
779 */
780
781 void mmeBattInfo ( U8 intervalls, U16 level)
782 {
783 pwr_DCB_Type pwr_DCB;
784
785 if (level > 255) level = 255;
786
787 pwr_DCB.RangeMin = (U8) level; /* low level threshold */
788 pwr_DCB.RangeMax = 100; /* 100 Percent */
789 pwr_DCB.Steps = intervalls; /* n Steps */
790 pwr_SetConfig(&pwr_DCB);
791 }
792
793
794 /*
795 +--------------------------------------------------------------------+
796 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
797 | STATE : code ROUTINE : sigExec |
798 +--------------------------------------------------------------------+
799
800 PURPOSE : execute equipment signal
801
802 */
803
804 static int sigExec (MfwHdr *curElem, U32 evt, U32 val)
805 {
806 MfwMme *ec;
807
808 while (curElem)
809 {
810 if (curElem->type == MfwTypMme)
811 {
812 ec = curElem->data;
813 if (ec->map & evt)
814 { /* events match */
815 ec->value = val;
816 if (ec->handler) /* handler valid */
817 {
818 // PATCH LE 06.06.00
819 // store current mfw elem
820 current_mfw_elem = curElem;
821 // END PATCH LE 06.06.00
822 if ((*(ec->handler))(evt,ec))
823 return 1; /* event consumed */
824 }
825 }
826 }
827 curElem = curElem->next;
828 }
829
830 return 0;
831 }
832
833
834 /*
835 +--------------------------------------------------------------------+
836 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
837 | STATE : code ROUTINE : mmeSignal |
838 +--------------------------------------------------------------------+
839
840 PURPOSE : equipment event (called by driver/PEI)
841
842 */
843
844 void mmeSignal (U32 evt, U32 value)
845 {
846 UBYTE temp=0;
847 #ifndef FF_POWER_MANAGEMENT
848 temp = dspl_Enable(0);
849 #else
850 /*OMAPS00098881 (removing power variant) a0393213(Prabakar)
851 display is enabled only when lcd refresh is needed*/
852 if(FFS_flashData.refresh == 1)
853 temp = dspl_Enable(0);
854 #endif
855 if (mfwSignallingMethod EQ 0)
856 {
857 if (mfwFocus)
858 if (sigExec(mfwFocus,evt,value))
859 {
860 #ifndef FF_POWER_MANAGEMENT
861 dspl_Enable(temp);
862 #else
863 /*OMAPS00098881 (removing power variant) a0393213(Prabakar)
864 display is enabled only when lcd refresh is needed*/
865 if(FFS_flashData.refresh == 1)
866 dspl_Enable(temp);
867 #endif
868 return;
869 }
870 if (mfwRoot)
871 sigExec(mfwRoot,evt,value);
872 }
873 else
874 {
875 MfwHdr * h = 0;
876
877 /*
878 * Focus set, then start here
879 */
880 if (mfwFocus)
881 h = mfwFocus;
882 /*
883 * Focus not set, then start root
884 */
885 if (!h)
886 h = mfwRoot;
887
888 /*
889 * No elements available, return
890 */
891
892 while (h)
893
894
895 {
896 /*
897 * Signal consumed, then return
898 */
899 if (sigExec (h, evt, value))
900 {
901 #ifndef FF_POWER_MANAGEMENT
902 dspl_Enable(temp);
903 #else
904 /*OMAPS00098881 (removing power variant) a0393213(Prabakar)
905 display is enabled only when lcd refresh is needed*/
906 if(FFS_flashData.refresh == 1)
907 dspl_Enable(temp);
908 #endif
909 return;
910 }
911
912 /*
913 * All windows tried inclusive root
914 */
915 if (h == mfwRoot)
916 {
917 #ifndef FF_POWER_MANAGEMENT
918 dspl_Enable(temp);
919 #else
920 /*OMAPS00098881 (removing power variant) a0393213(Prabakar)
921 display is enabled only when lcd refresh is needed*/
922 if(FFS_flashData.refresh == 1)
923 dspl_Enable(temp);
924 #endif
925 return;
926 }
927
928 /*
929 * get parent window
930 */
931 h = mfwParent(mfwParent(h));
932 if(h)
933 h = ((MfwWin * )(h->data))->elems;
934 }
935 sigExec (mfwRoot, evt, value);
936
937 }
938 #ifndef FF_POWER_MANAGEMENT
939 dspl_Enable(temp);
940 #else
941 /*OMAPS00098881 (removing power variant) a0393213(Prabakar)
942 display is enabled only when lcd refresh is needed*/
943 if(FFS_flashData.refresh == 1)
944 dspl_Enable(temp);
945 #endif
946 return;
947 }
948
949
950 /*
951 +--------------------------------------------------------------------+
952 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
953 | STATE : code ROUTINE : mmeCommand |
954 +--------------------------------------------------------------------+
955
956 PURPOSE : handle mfw windows command
957
958 */
959
960 static int mmeCommand (U32 cmd, void *h)
961 {
962 switch (cmd)
963 {
964 case MfwCmdDelete: /* delete me */
965 if (!h)
966 return 0;
967 mmeDelete(h);
968 return 1;
969 default:
970 break;
971 }
972
973 return 0;
974 }
975
976
977 /*
978 +--------------------------------------------------------------------+
979 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
980 | STATE : code ROUTINE : rAT_PercentSQ |
981 +--------------------------------------------------------------------+
982
983 PURPOSE : called by ACI on change of signal quality
984
985 */
986
987 void rAT_PercentSQ (BYTE val)
988 {
989 TRACE_FUNCTION("rAT_PercentSQ()");
990
991 //ES!! no longer needed mmeSignal(MfwMmeSignal,val);
992 }
993
994
995 /*
996 +--------------------------------------------------------------------+
997 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
998 | STATE : code ROUTINE : rAT_PercentBC |
999 +--------------------------------------------------------------------+
1000
1001 PURPOSE : called by ACI on change of battery status
1002
1003 */
1004
1005 void rAT_PercentBC (BYTE val)
1006 {
1007 TRACE_FUNCTION("rAT_PercentBC()");
1008
1009 //ES!! no longer needed mmeSignal(MfwMmeBattery,val);
1010 }
1011
1012
1013 /*
1014 +--------------------------------------------------------------------+
1015 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1016 | STATE : code ROUTINE : mmePrimHandler |
1017 +--------------------------------------------------------------------+
1018
1019 PURPOSE : MME primitive handler
1020
1021 */
1022
1023 static BOOL mmePrimHandler (USHORT opc, void *data)
1024 {
1025 U8 level;
1026 U8 state;
1027 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
1028 #ifdef FF_MMI_AUDIO_PROFILE
1029 U8 hdsData;
1030 U8 cktData;
1031 #endif
1032
1033
1034 // TRACE_FUNCTION ("mmePrimHandler()");
1035
1036 switch (opc)
1037 {
1038 case MMI_RXLEV_IND:
1039 level = ((T_MMI_RXLEV_IND *) data)->rxlev;
1040 mmeSignal(MfwMmeSignal,level);
1041 return TRUE; /* processed by MME, delete */
1042 case MMI_BATTERY_IND:
1043 level = ((T_MMI_BATTERY_IND *) data)->volt;
1044 state = ((T_MMI_BATTERY_IND *) data)->temp;
1045 if (battLevel != level)
1046 {
1047 battLevel = level;
1048 mmeSignal(MfwMmeBattery,level);
1049 }
1050 if (battState != state)
1051 {
1052 battState = state;
1053 mmeSignal(MfwMmeBaState,state);
1054 }
1055 return TRUE; /* processed by MME, delete */
1056 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
1057 // the corresponding callback function is called in MMI context
1058 // this comment will be removed once the sap for this is available
1059 #ifdef FF_MMI_AUDIO_PROFILE
1060 case MMI_HEADSET_IND:
1061 TRACE_EVENT("MMI_HEADSET_IND");
1062 hdsData = ((T_MMI_HEADSET_IND *) data)->headset_status;
1063 mmeSignal(MfwMmeHeadset,hdsData);
1064 return TRUE;
1065 case MMI_CARKIT_IND:
1066 TRACE_EVENT("MMI_CARKIT_IND");
1067 cktData = ((T_MMI_CARKIT_IND *) data)->carkit_status;
1068 mmeSignal(MfwMmeCarkit, cktData);
1069 return TRUE;
1070 #endif
1071 //xashmic 9 Sep 2006, OMAPS00092732
1072 //Handler for USB connect or disconnect events
1073 #ifdef FF_MMI_USBMS
1074 case USBMS_MMI_IND:
1075 {
1076 T_USBMS_MMI_IND *usbms_mmi_ind=(T_USBMS_MMI_IND *) data;
1077 switch(usbms_mmi_ind->usb_status)
1078 {
1079 case USB_CABLE_CONNECT_EVENT:
1080 TRACE_EVENT("USB_CABLE_CONNECT_EVENT");
1081 //xashmic 27 Sep 2006, OMAPS00096389
1082 //xashmic 21 Sep 2006, OMAPS00095831
1083 //To enumerate based on user selection
1084 if( ( getBootUpState() > 0 ) && ( getUSBMSFlags() & MFW_USBMS_POPUP_ENABLE))
1085 {
1086 mmeSignal(MfwMmeUSBMS , MFW_USB_CABLE_CONNECT_EVENT);
1087 }
1088 //xashmic 21 Sep 2006, OMAPS00095831
1089 //To Enumerate automatically
1090 else
1091 {
1092 //x0pleela 01 Apr, 2007 ER: OMAPS00122561
1093 #ifdef FF_PHONE_LOCK
1094 //x0pleela 29 May, 2007 DR: OMAPS00132483
1095 //Check the phone lock status
1096 if( mfw_get_Phlock_status() )
1097 mmeSignal(MfwMmeUSBMS , MFW_USB_CABLE_CONNECT_EVENT);
1098 else
1099 #endif //FF_PHONE_LOCK
1100 mfw_usbms_enum_control(MFW_USB_ENUM , MFW_USB_TYPE_ALL);
1101 }
1102 break;
1103 case USB_CABLE_DISCONNECT_EVENT:
1104 TRACE_EVENT("USB_CABLE_DISCONNECT_EVENT");
1105 mmeSignal(MfwMmeUSBMS , MFW_USB_CABLE_DISCONNECT_EVENT);
1106 mfw_usbms_enum_control(MFW_USB_NO_ENUM , MFW_USB_TYPE_ALL);
1107 break;
1108 }
1109 PFREE(usbms_mmi_ind);
1110 return TRUE;
1111 }
1112
1113 /* Mar 22, 2007 DVT: OMAPS00121916 x0039928 */
1114 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- Start */
1115 #ifdef FF_MMI_TFLASH
1116 case TFLASH_MMI_IND:
1117 {
1118 T_TFLASH_MMI_IND *tflash_mmi_ind=(T_TFLASH_MMI_IND *) data;
1119 switch(tflash_mmi_ind->mc_status)
1120 {
1121 case MC_INSERT_EVENT:
1122 TRACE_EVENT("TFLASH card inserted");
1123 mmeSignal(MfwMmeUSBMS , MFW_TFLASH_INSERTED_EVENT);
1124 break;
1125 case MC_REMOVE_EVENT:
1126 TRACE_EVENT("TFLASH card removed");
1127 mmeSignal(MfwMmeUSBMS , MFW_TFLASH_REMOVED_EVENT);
1128 break;
1129 }
1130 PFREE(tflash_mmi_ind);
1131 return TRUE;
1132 }
1133 #endif
1134 /* Sep 26, 2007 Configuration of Drives for SBuild 2.3.0 Migration x0080701 (Bharat) -- End */
1135
1136 #endif
1137 }
1138
1139 return FALSE; /* not processed, forward */
1140 }
1141
1142
1143 /*
1144 +--------------------------------------------------------------------+
1145 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1146 | STATE : code ROUTINE : mmeFlagHandler |
1147 +--------------------------------------------------------------------+
1148
1149 PURPOSE : MME driver flag handler
1150
1151 */
1152
1153 void mmeFlagHandler (void)
1154 {
1155 TRACE_FUNCTION ("mmeFlagHandler()");
1156
1157 while (mfwMmeDrvFlag)
1158 {
1159 if (mfwMmeDrvFlag & MmeFlagRtcAlarm)
1160 {
1161 mfwMmeDrvFlag &= ~MmeFlagRtcAlarm;
1162 mmeSignal(MfwMmeRtcAlarm,0);
1163 }
1164 else if (mfwMmeDrvFlag & MmeFlagHdsDetect)
1165 {
1166 mfwMmeDrvFlag &= ~MmeFlagHdsDetect;
1167 mmeSignal(MfwMmeHdsDetect,hdsPresence);
1168 }
1169 else if (mfwMmeDrvFlag & MmeFlagIrdaMsg)
1170 {
1171 }
1172 else
1173 {
1174 mfwMmeDrvFlag = 0;
1175 }
1176 }
1177 }
1178
1179
1180 /*
1181 +--------------------------------------------------------------------+
1182 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1183 | STATE : code ROUTINE : pwr_callback |
1184 +--------------------------------------------------------------------+
1185
1186 PURPOSE : Called by battery driver
1187
1188 */
1189
1190 static void pwrCb (drv_SignalID_Type *signal_params)
1191 {
1192 pwr_Status_Type *para;
1193 PALLOC(battery_ind, MMI_BATTERY_IND);
1194
1195 para = (pwr_Status_Type *) signal_params->UserData;
1196 battery_ind->volt = para->BatteryLevel;
1197 battery_ind->temp = para->Status;
1198
1199 PSENDX(ACI,battery_ind);
1200 }
1201
1202
1203 /*
1204 +--------------------------------------------------------------------+
1205 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1206 | STATE : code ROUTINE : rx_callback |
1207 +--------------------------------------------------------------------+
1208
1209 PURPOSE : Called by fieldstrength driver
1210
1211 */
1212
1213 static void rxCb (drv_SignalID_Type *signal_params)
1214 {
1215 rx_Status_Type *para;
1216 PALLOC(rxlevel_ind,MMI_RXLEV_IND);
1217
1218 para = (rx_Status_Type *) signal_params->UserData;
1219 rxlevel_ind->rxlev = para->actLevel;
1220
1221 PSENDX(ACI,rxlevel_ind);
1222 }
1223
1224
1225 /*
1226 +--------------------------------------------------------------------+
1227 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1228 | STATE : code ROUTINE : rtcCb |
1229 +--------------------------------------------------------------------+
1230
1231 PURPOSE : alarm callback from RTC
1232
1233 */
1234 /*a0393213(R.Prabakar) lint warnings removal
1235 warning:symbol(rtcCb) not referenced
1236 soln :this function was not at all called. so this function has been put under MMI_LINT_WARNING_REMOVAL,
1237 which is not defined. If this function is needed this flag can be removed*/
1238 #ifdef MMI_LINT_WARNING_REMOVAL
1239 static void rtcCb (drv_SignalID_Type *signal_params)
1240 {
1241 mfwMmeDrvFlag |= MmeFlagRtcAlarm;
1242 vsi_c_awake(VSI_CALLER_SINGLE);
1243 }
1244 #endif
1245
1246
1247
1248 /*
1249 +--------------------------------------------------------------------+
1250 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1251 | STATE : code ROUTINE : hdsCb |
1252 +--------------------------------------------------------------------+
1253
1254 PURPOSE : callback from headset detection
1255
1256 */
1257 #ifndef FF_MMI_AUDIO_PROFILE /*a0393213 warnings removal*/
1258 static void hdsCb (drv_SignalID_Type *signal_params)
1259 {
1260 if (signal_params->SignalType == 1)
1261 {
1262 hdsPresence = (U16)signal_params->UserData;
1263 mfwMmeDrvFlag |= MmeFlagHdsDetect;
1264 vsi_c_awake(VSI_CALLER_SINGLE);
1265 }
1266 }
1267 #endif
1268
1269 #ifdef FF_MMI_AUDIO_PROFILE
1270 /*
1271 +--------------------------------------------------------------------+
1272 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1273 | STATE : code ROUTINE : mfw_set_stereo_path |
1274 +--------------------------------------------------------------------+
1275
1276 PURPOSE : This sets the stereo path for the current audio profile
1277
1278 */
1279
1280 void mfw_set_stereo_path(int device)
1281 {
1282 TRACE_FUNCTION("mfw_set_stereo_path()");
1283
1284 TRACE_EVENT_P1("Device === %d", device);
1285 switch(device)
1286 {
1287 case MFW_AUD_HEADSET:
1288 audio_set_path(AUDIO_STEREO_SPEAKER_HEADPHONE, TRUE);
1289 break;
1290 case MFW_AUD_HANDHELD:
1291 audio_set_path(AUDIO_STEREO_SPEAKER_HANDHELD, TRUE);
1292 break;
1293 case MFW_AUD_CARKIT:
1294 audio_set_path(AUDIO_STEREO_SPEAKER_CARKIT, TRUE);
1295 break;
1296 case MFW_AUD_LOUDSPEAKER:
1297 audio_set_path(AUDIO_STEREO_SPEAKER_HANDFREE, TRUE);
1298 break;
1299 }
1300 }
1301 /*
1302 +--------------------------------------------------------------------+
1303 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1304 | STATE : code ROUTINE : mfw_unset_stereo_path |
1305 +--------------------------------------------------------------------+
1306
1307 PURPOSE : This resets the voice path for the current audio profile
1308
1309 */
1310 void mfw_unset_stereo_path(int device)
1311 {
1312 TRACE_FUNCTION("mfw_unset_stereo_path()");
1313
1314 TRACE_EVENT_P1("Device === %d", device);
1315 switch(device)
1316 {
1317 case MFW_AUD_HEADSET:
1318 audio_set_path(AUDIO_SPEAKER_HEADSET, FALSE);
1319 break;
1320 case MFW_AUD_HANDHELD:
1321 audio_set_path(AUDIO_SPEAKER_HANDHELD, FALSE);
1322 break;
1323 case MFW_AUD_CARKIT:
1324 audio_set_path(AUDIO_SPEAKER_CARKIT, FALSE);
1325 break;
1326 case MFW_AUD_LOUDSPEAKER:
1327 audio_set_path(AUDIO_SPEAKER_HANDFREE, FALSE);
1328 break;
1329 }
1330 }
1331
1332 // Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth)
1333 // Fix: Callback function called when mfw receives hook detect event from BSP
1334 void mfw_audio_hook_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
1335 ACCESSORY_CALLBACK_PARAM callbackparam )
1336 {
1337
1338 PALLOC(hdsData,MMI_HEADSET_IND);
1339 hdsData->headset_status = (U8)notify;
1340 PSENDX(ACI,hdsData);
1341
1342 }
1343
1344 /*
1345 +--------------------------------------------------------------------+
1346 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1347 | STATE : code ROUTINE : mfw_audio_headSet_indication |
1348 +--------------------------------------------------------------------+
1349
1350 PURPOSE :Callback function for the events related to headset and create and post a primitive
1351
1352 */
1353 void mfw_audio_headSet_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
1354 ACCESSORY_CALLBACK_PARAM callbackparam )
1355 {
1356
1357 PALLOC(hdsData,MMI_HEADSET_IND);
1358 hdsData->headset_status = (U8)notify;
1359 PSENDX(ACI,hdsData);
1360
1361 }
1362 /*
1363 +--------------------------------------------------------------------+
1364 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1365 | STATE : code ROUTINE : mfw_audio_headSet_indication |
1366 +--------------------------------------------------------------------+
1367
1368 PURPOSE :Callback function for the events related to carkit and create and post a primitive
1369
1370 */
1371 void mfw_audio_carKit_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify,
1372 ACCESSORY_CALLBACK_PARAM callback_param )
1373 {
1374 PALLOC(cktData,MMI_CARKIT_IND);
1375 cktData->carkit_status = (U8)notify;
1376 PSENDX(ACI,cktData);
1377 }
1378 /*
1379 +--------------------------------------------------------------------+
1380 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1381 | STATE : code ROUTINE : mfw_audio_headSet_indication |
1382 +--------------------------------------------------------------------+
1383
1384 PURPOSE :handles the request to switch to the respective device from the
1385 Bmi when the indications of insert and removal are received
1386
1387 */
1388 void mfw_audio_device_indication( U8 notify)
1389 {
1390 TRACE_FUNCTION("mfw_audio_device_indication()");
1391
1392 TRACE_EVENT_P1(" Indication Type == %d",notify);
1393 switch(notify)
1394 {
1395 case AUDIO_HEADSET_PLUGGED:
1396 if(currAudioDevice != MFW_AUD_HEADSET)
1397 {
1398 mfw_audio_set_device(MFW_AUD_HEADSET);
1399 headsetInserted = TRUE;
1400 }
1401 break;
1402 case AUDIO_HEADSET_UNPLUGGED:
1403 if( currAudioDevice == MFW_AUD_HEADSET)
1404 {
1405 mfw_audio_set_device(MFW_AUD_HANDHELD );
1406
1407 }
1408 headsetInserted = FALSE;
1409 break;
1410 case AUDIO_HEADSET_HOOK_DETECT:
1411 break;
1412 case AUDIO_CARKIT_PLUGGED:
1413 if(currAudioDevice != MFW_AUD_CARKIT)
1414 {
1415 mfw_audio_set_device(MFW_AUD_CARKIT);
1416 carkitInserted = TRUE;
1417 }
1418 break;
1419 case AUDIO_CARKIT_UNPLUGGED:
1420 if( currAudioDevice == MFW_AUD_CARKIT)
1421 {
1422 if(headsetInserted == TRUE)
1423 {
1424 mfw_audio_set_device (MFW_AUD_HEADSET);
1425 }
1426 else
1427 {
1428 mfw_audio_set_device (MFW_AUD_HANDHELD);
1429 }
1430 }
1431 carkitInserted = FALSE;
1432 break;
1433 default:
1434 break;
1435 }
1436 }
1437 /*
1438 +--------------------------------------------------------------------+
1439 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
1440 | STATE : code ROUTINE : mfw_audio_headSet_indication |
1441 +--------------------------------------------------------------------+
1442
1443 PURPOSE :This function handles the switch between the handheld and loudspeaker.
1444 The type of device to be loaded will be posted from the menu selection
1445 When the profile changes if there is any other media played then the
1446 speaker should be set to stereo speaker
1447
1448 */
1449 void mfw_audio_set_device(int type)
1450 {
1451 /*Description: this array holds the file names on the ffs in which the audio profiles are stored.
1452 The file names are yet to be confirmed from the audio services group*/
1453 //char aud_cg_file[4][15] = {"handheld","loudspeaker","headset","carkit"};
1454 TRACE_FUNCTION("mfw_audio_set_device()");
1455
1456 TRACE_EVENT_P1("type of device = %d",type);
1457 switch(type)
1458 {
1459 case MFW_AUD_HANDHELD:
1460 audio_set_device((char*)HANDHELD);// (aud_cg_file[HANDHELD] );
1461 currAudioDevice = MFW_AUD_HANDHELD;
1462 break;
1463 case MFW_AUD_LOUDSPEAKER:
1464 audio_set_device((char*) LOUDSPEAKER);//(aud_cg_file[LOUDSPEAKER]);
1465 currAudioDevice = MFW_AUD_LOUDSPEAKER;
1466 break;
1467 case MFW_AUD_HEADSET:
1468 audio_set_device((char*)HEADSET);//(aud_cg_file[HEADSET]);
1469 currAudioDevice = MFW_AUD_HEADSET;
1470 break;
1471 case MFW_AUD_CARKIT:
1472 audio_set_device((char*)CARKIT);//(aud_cg_file[CARKIT]);
1473 currAudioDevice = MFW_AUD_CARKIT;
1474 default:
1475 break;
1476 }
1477 if(TRUE == mfwAudPlay)
1478 mfw_set_stereo_path(currAudioDevice);
1479
1480 }
1481
1482 #ifdef ISAMPLE
1483 /* OMAPS00057367, 3 Dec 2005, nekkareb : start */
1484 /* Function mfw_get_current_audioDevice modified to read the
1485 current audio device using the audio service entity function
1486 audio_full_access_read. This solves some synchronisation
1487 problems b/n Audio & MMI for the DR OMAPS00057367 */
1488 /*returns the current active audio device*/
1489 int mfw_get_current_audioDevice()
1490 {
1491 T_AUDIO_FULL_ACCESS_READ read;
1492 INT8 speaker;
1493
1494 read.variable_indentifier = AUDIO_SPEAKER_MODE;
1495 read.data = &speaker;
1496
1497 TRACE_FUNCTION("mfw_get_current_audioDevice()");
1498 audio_full_access_read(&read );
1499
1500 switch(speaker)
1501 {
1502 case AUDIO_SPEAKER_NONE:
1503 TRACE_EVENT("mfw_get_current_audioDevice() - SPEAKER PATH NOT CONFIGURED");
1504 currAudioDevice = MFW_AUD_HANDHELD; //Need to check the mapping
1505 break;
1506 case AUDIO_SPEAKER_HANDHELD:
1507 currAudioDevice = MFW_AUD_HANDHELD;
1508 break;
1509 case AUDIO_SPEAKER_HEADSET:
1510 currAudioDevice = MFW_AUD_HEADSET;
1511 break;
1512 case AUDIO_SPEAKER_AUX:
1513 currAudioDevice = MFW_AUD_LOUDSPEAKER; //Need to check the mapping
1514 break;
1515 case AUDIO_SPEAKER_CARKIT:
1516 currAudioDevice = MFW_AUD_CARKIT;
1517 break;
1518 case AUDIO_SPEAKER_HANDFREE:
1519 case AUDIO_SPEAKER_HANDFREE_CLASS_D:
1520 currAudioDevice = MFW_AUD_LOUDSPEAKER;
1521 break;
1522 case AUDIO_SPEAKER_INVERTED_VOICE:
1523 currAudioDevice = MFW_AUD_HEADSET; //Need to check the mapping
1524 break;
1525 }
1526
1527 return currAudioDevice;
1528 }
1529 /* OMAPS00057367, 3 Dec 2005, nekkareb : end */
1530 #else
1531 /*returns the current active audio device*/
1532 int mfw_get_current_audioDevice()
1533 {
1534 TRACE_FUNCTION("mfw_get_current_audioDevice()");
1535 return currAudioDevice;
1536 }
1537 #endif //ISAMPLE
1538 #endif
1539
1540