FreeCalypso > hg > tcs211-fcmodem
comparison g23m/condat/ms/src/mfw/mfw_mme.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 | 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 * nekkareb - OMAPS00057367: 8 Dec 2005 | |
20 * Description: Fix build problems for fix of OMAPS00057367 | |
21 * Solution: Included OMAPS00057367 changes under a flag ISAMPLE | |
22 * | |
23 * nekkareb - OMAPS00057367: 3 Dec 2005 | |
24 * Description: Locosto: TTY MT call does not work | |
25 * Solution: Extra TTY command added so as to initiate the AUDIO entity to send the | |
26 * TTY_START request to L1 only after the Vocoder enable is sent. | |
27 * Current audio device is read from audio service entity functions. | |
28 * | |
29 * xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
30 * Description: Support for various audio profiles | |
31 * Solution: The support for audio device's carkit/headset/loudspeaker/handheld. | |
32 * The audio device is enabled as per the user actions. | |
33 * | |
34 * ***************** Version 5 ******************************************** | |
35 * User: Kk Date: 3.03.00 Time: 17:52 | |
36 * Updated in $/GSM/Condat/MS/SRC/MFW | |
37 * | |
38 * ***************** Version 4 ***************** | |
39 * User: Es Date: 2.03.00 Time: 16:48 | |
40 * Updated in $/GSM/Condat/MS/SRC/MFW | |
41 * generate battery/signal primitives with more info from driver | |
42 * callbacks. Catch the primitives on reception and call MMI event | |
43 * handler. Don't use ACI any longer for this purpose. | |
44 * | |
45 * ***************** Version 3 ***************** | |
46 * User: Es Date: 14.04.99 Time: 17:34 | |
47 * Updated in $/GSM/DEV/MS/SRC/MFW | |
48 * moved to CST | |
49 | | |
50 | ***************** Version 2 ***************** | |
51 | User: Le Date: 14.04.99 Time: 9:51 | |
52 | Updated in $/GSM/DEV/MS/SRC/MFW | |
53 * | |
54 * ***************** Version 1 ***************** | |
55 * User: Es Date: 20.02.99 Time: 11:54 | |
56 * Created in $/GSM/DEV/MS/SRC/MFW | |
57 * mobile equipment | |
58 */ | |
59 | |
60 #define ENTITY_MFW | |
61 | |
62 #include <stdio.h> | |
63 | |
64 #if defined (NEW_FRAME) | |
65 | |
66 #include "typedefs.h" | |
67 #include "vsi.h" | |
68 #include "custom.h" | |
69 #include "gsm.h" | |
70 | |
71 #else | |
72 | |
73 #include "STDDEFS.H" | |
74 #include "custom.h" | |
75 #include "gsm.h" | |
76 #include "vsi.h" | |
77 | |
78 #endif | |
79 | |
80 #include "mfw_mfw.h" | |
81 #include "mfw_sys.h" | |
82 #include "prim.h" | |
83 #include "message.h" | |
84 #include "prim.h" | |
85 #include "aci_cmh.h" | |
86 #include "gdi.h" | |
87 #include "audio.h" | |
88 #include "pwr.h" | |
89 #include "rx.h" | |
90 #include "light.h" | |
91 #include "mfw_acie.h" | |
92 #include "mfw_mme.h" | |
93 #include "mfw_win.h" | |
94 | |
95 /* OMAPS00057367, 8 Dec 2005, nekkare, build fix */ | |
96 #if (BOARD == 71) | |
97 #define ISAMPLE | |
98 #endif | |
99 | |
100 #define hCommPL _ENTITY_PREFIXED(hCommPL) | |
101 #define hCommACI _ENTITY_PREFIXED(hCommACI) | |
102 | |
103 #if defined (NEW_FRAME) | |
104 EXTERN T_HANDLE hCommPL; | |
105 EXTERN T_HANDLE hCommACI; | |
106 #else | |
107 EXTERN T_VSI_CHANDLE hCommPL; | |
108 EXTERN T_VSI_CHANDLE hCommACI; | |
109 #endif | |
110 | |
111 EXTERN MfwHdr * current_mfw_elem; | |
112 | |
113 /* FLAG DRIVER CALLBACKS */ | |
114 #define MmeFlagRtcAlarm 1 /* rtc alarm */ | |
115 #define MmeFlagHdsDetect 2 /* headset detection */ | |
116 #define MmeFlagIrdaMsg 4 /* IRDA event */ | |
117 U16 mfwMmeDrvFlag = 0; /* hold driver CB flags */ | |
118 | |
119 static U8 battLevel = 0; /* battery level */ | |
120 static U8 battState = 0; /* state of power supply */ | |
121 static U16 hdsPresence = 0; /* headset presence */ | |
122 static U16 irdaMsg = 0; /* IRDA message */ | |
123 | |
124 static int mmeCommand (U32 cmd, void *h); | |
125 | |
126 /* driver callbacks */ | |
127 static void pwrCb (drv_SignalID_Type *signal_params); | |
128 static void rxCb (drv_SignalID_Type *signal_params); | |
129 static void rtcCb (drv_SignalID_Type *signal_params); | |
130 | |
131 static BOOL mmePrimHandler (USHORT opc, void *data); | |
132 static int pSlot; /* primitive handler slot */ | |
133 | |
134 static void hdsCb (drv_SignalID_Type *signal_params); | |
135 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
136 #ifdef FF_MMI_AUDIO_PROFILE | |
137 #define HANDHELD "handheld" //0 | |
138 #define LOUDSPEAKER "handfree" // 1 | |
139 #define HEADSET "headset" // 2 | |
140 #define CARKIT "carkit" // 3 | |
141 static UBYTE currAudioDevice = MFW_AUD_HANDHELD; | |
142 static UBYTE prevAudioDevice = MFW_AUD_HANDHELD; | |
143 UBYTE headsetInserted = FALSE; //indicates if the headset is inserted or not | |
144 UBYTE carkitInserted = FALSE; //indicates if the carkit is inserted or not | |
145 UBYTE mfwAudPlay = FALSE; //indicates if any other audio media is being played or not | |
146 extern audio_set_device(char* mode); | |
147 void mfw_audio_headSet_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify, | |
148 ACCESSORY_CALLBACK_PARAM callbackparam ); | |
149 void mfw_audio_carKit_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify, | |
150 ACCESSORY_CALLBACK_PARAM callbackparam ); | |
151 #endif | |
152 | |
153 void mfw_audio_set_device(int type); | |
154 /* | |
155 +--------------------------------------------------------------------+ | |
156 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
157 | STATE : code ROUTINE : mmeInit | | |
158 +--------------------------------------------------------------------+ | |
159 | |
160 PURPOSE : initialize equipment handler | |
161 | |
162 */ | |
163 | |
164 MfwRes mmeInit (void) | |
165 { | |
166 // int i; // RAVI | |
167 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
168 // the callback registeration variables are populated here and passed as | |
169 // argument to audio_init | |
170 #ifdef FF_MMI_AUDIO_PROFILE | |
171 T_ACCESSORY_CALLBACK audio_device_config[MAX_EXT_AUD_DEVICE]; | |
172 | |
173 audio_device_config[CALLBACK_HEADSET].callbackFunc = mfw_audio_headSet_indication; | |
174 audio_device_config[CALLBACK_HEADSET].callbackVal = NULL; | |
175 audio_device_config[CALLBACK_CARKIT].callbackFunc = mfw_audio_carKit_indication; | |
176 audio_device_config[CALLBACK_CARKIT].callbackVal = NULL; | |
177 #endif | |
178 | |
179 mfwCommand[MfwTypMme] = (MfwCb) mmeCommand; | |
180 | |
181 mfwMmeDrvFlag = 0; | |
182 | |
183 battLevel = 0; | |
184 battState = 0; | |
185 hdsPresence = 0; | |
186 irdaMsg = 0; | |
187 | |
188 pwr_Init(pwrCb); //power driver | |
189 rx_Init(rxCb); //fieldstrength driver | |
190 light_Init(); //light emitting driver | |
191 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
192 #ifdef FF_MMI_AUDIO_PROFILE | |
193 audio_Init(audio_device_config); | |
194 #else | |
195 audio_Init(hdsCb); //audio driver | |
196 #endif | |
197 | |
198 mmeBattInfo ( 10, 0); | |
199 | |
200 mmeRxInfo(5,0); | |
201 | |
202 /* install prim handler */ | |
203 pSlot = aci_create((T_PRIM_HANDLER)mmePrimHandler,NULL); | |
204 | |
205 return MfwResOk; | |
206 } | |
207 | |
208 | |
209 /* | |
210 +--------------------------------------------------------------------+ | |
211 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
212 | STATE : code ROUTINE : mmeExit | | |
213 +--------------------------------------------------------------------+ | |
214 | |
215 PURPOSE : finalize equipment handler | |
216 | |
217 */ | |
218 | |
219 MfwRes mmeExit (void) | |
220 { | |
221 aci_delete(pSlot); /* remove prim handler */ | |
222 mfwCommand[MfwTypMme] = 0; | |
223 | |
224 return MfwResOk; | |
225 } | |
226 | |
227 | |
228 /* | |
229 +--------------------------------------------------------------------+ | |
230 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
231 | STATE : code ROUTINE : mmeCreate | | |
232 +--------------------------------------------------------------------+ | |
233 | |
234 PURPOSE : create equipment control | |
235 | |
236 */ | |
237 | |
238 MfwHnd mmeCreate (MfwHnd w, MfwEvt e, MfwCb f) | |
239 { | |
240 MfwHdr *hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr)); | |
241 MfwMme *mme = (MfwMme *) mfwAlloc(sizeof(MfwMme)); | |
242 MfwHdr *insert_status =0; | |
243 | |
244 if (!hdr || !mme) | |
245 { | |
246 TRACE_ERROR("ERROR: mmeCreate() Mem Alloc Failed."); | |
247 | |
248 if(hdr) | |
249 mfwFree((U8*)hdr,sizeof(MfwHdr)); | |
250 if(mme) | |
251 mfwFree((U8*)mme,sizeof(MfwMme)); | |
252 | |
253 return 0; | |
254 } | |
255 | |
256 mme->map = e; | |
257 mme->handler = f; | |
258 mme->value = 0; | |
259 | |
260 hdr->data = mme; | |
261 hdr->type = MfwTypMme; | |
262 | |
263 insert_status = mfwInsert(w,hdr); | |
264 | |
265 if(!insert_status) | |
266 { | |
267 TRACE_ERROR("ERROR: mmeCreate() Failed to Install Handler. "); | |
268 mfwFree((U8*)hdr,sizeof(MfwHdr)); | |
269 mfwFree((U8*)mme ,sizeof(MfwMme)); | |
270 return 0; | |
271 } | |
272 return insert_status; | |
273 } | |
274 | |
275 | |
276 /* | |
277 +--------------------------------------------------------------------+ | |
278 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
279 | STATE : code ROUTINE : mmeDelete | | |
280 +--------------------------------------------------------------------+ | |
281 | |
282 PURPOSE : delete equipment control | |
283 | |
284 */ | |
285 | |
286 MfwRes mmeDelete (MfwHnd h) | |
287 { | |
288 MfwRes res; | |
289 | |
290 if (!h) | |
291 return MfwResIllHnd; | |
292 | |
293 res = (mfwRemove(h)) ? MfwResOk : MfwResIllHnd; | |
294 | |
295 mfwFree(((MfwHdr *) h)->data,sizeof(MfwMme)); | |
296 mfwFree(h,sizeof(MfwHdr)); | |
297 | |
298 return res; | |
299 } | |
300 | |
301 | |
302 /* | |
303 +--------------------------------------------------------------------+ | |
304 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
305 | STATE : code ROUTINE : mmeHdsInit | | |
306 +--------------------------------------------------------------------+ | |
307 | |
308 PURPOSE : init the Headset detection and setup callback handler | |
309 | |
310 */ | |
311 | |
312 MfwRes mmeHdsInit (void (*hds_init) ()) | |
313 { | |
314 mfwMmeDrvFlag &= ~MmeFlagHdsDetect; | |
315 | |
316 return 1; | |
317 } | |
318 | |
319 | |
320 /* | |
321 +--------------------------------------------------------------------+ | |
322 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
323 | STATE : code ROUTINE : mmeRtcInit | | |
324 +--------------------------------------------------------------------+ | |
325 | |
326 PURPOSE : init the RTC and setup the alarm callback handler | |
327 | |
328 extern UBYTE clk_Init (USHORT, drv_SignalCB_Type, UBYTE*); | |
329 */ | |
330 | |
331 MfwRes mmeRtcInit (USHORT drvHandle, UBYTE *info) | |
332 { | |
333 mfwMmeDrvFlag &= ~MmeFlagRtcAlarm; | |
334 | |
335 return 0; // RAVI | |
336 } | |
337 | |
338 | |
339 static int mme_backlightStatus[BL_LAST_OPTION]; | |
340 /* | |
341 +--------------------------------------------------------------------+ | |
342 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
343 | STATE : code ROUTINE : mme_setBacklightIdle | | |
344 +--------------------------------------------------------------------+ | |
345 | |
346 PURPOSE : called when an event may change the backlight level/status | |
347 | |
348 */ | |
349 void mme_backlightEvent(int event) | |
350 { | |
351 int light; | |
352 if ((event >=BL_INIT) && (event <BL_LAST_OPTION)) | |
353 { | |
354 light = mme_backlightStatus[event]; | |
355 if (light == BL_SET_IDLE) | |
356 { | |
357 light_setBacklightIdle(); | |
358 } | |
359 else if (light == BL_NO_CHANGE) | |
360 { | |
361 //No change | |
362 } | |
363 else if ((light >=BL_NO_LIGHT) && (light <=BL_MAX_LIGHT)) | |
364 { | |
365 mmeBackLight ((U8)light); | |
366 } | |
367 | |
368 } | |
369 } | |
370 | |
371 /* | |
372 +--------------------------------------------------------------------+ | |
373 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
374 | STATE : code ROUTINE : mme_setBacklightIdle | | |
375 +--------------------------------------------------------------------+ | |
376 | |
377 PURPOSE : called to initialise backlight events | |
378 | |
379 */ | |
380 void mme_setBacklightEvent(int event, int lightLevel) | |
381 { | |
382 if ((event >=BL_INIT) && (event <BL_LAST_OPTION)) | |
383 { | |
384 mme_backlightStatus[event] = lightLevel; | |
385 } | |
386 } | |
387 | |
388 | |
389 /* | |
390 +--------------------------------------------------------------------+ | |
391 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
392 | STATE : code ROUTINE : mmeBackLight | | |
393 +--------------------------------------------------------------------+ | |
394 | |
395 PURPOSE : set display backlight | |
396 | |
397 */ | |
398 void mmeBackLight (U8 level) | |
399 { | |
400 light_SetStatus(LIGHT_DEVICE_BACKLIGHT,level); | |
401 } | |
402 | |
403 | |
404 /* | |
405 +--------------------------------------------------------------------+ | |
406 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
407 | STATE : code ROUTINE : mmeAudioTone | | |
408 +--------------------------------------------------------------------+ | |
409 | |
410 PURPOSE : configure the buzzer | |
411 | |
412 */ | |
413 | |
414 void mmeAudioTone (U8 callTone, U8 volume, U8 toneStat) | |
415 { | |
416 if (toneStat EQ TONE_SWT_OFF) | |
417 #ifdef FF_MMI_RINGTONE /* Stop MSL Play */ | |
418 audio_StopSoundbyID(AUDIO_SPEAKER, CALLTONE_SELECT); | |
419 #else | |
420 audio_StopSoundbyID(AUDIO_SPEAKER,callTone); | |
421 #endif | |
422 else | |
423 #ifdef FF_MMI_RINGTONE /* Play MSL Ring tone */ | |
424 audio_PlaySoundID(AUDIO_SPEAKER,CALLTONE_SELECT,volume,toneStat); | |
425 #else | |
426 audio_PlaySoundID(AUDIO_SPEAKER,callTone,volume,toneStat); | |
427 #endif | |
428 } | |
429 | |
430 | |
431 /* | |
432 +--------------------------------------------------------------------+ | |
433 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
434 | STATE : code ROUTINE : mmeSetVolume | | |
435 +--------------------------------------------------------------------+ | |
436 | |
437 PURPOSE : configure mic and speaker volume | |
438 | |
439 */ | |
440 | |
441 MfwRes mmeSetVolume (U16 audioIn, U16 audioOut) | |
442 { | |
443 if (audioIn > 255) audioIn = 255; | |
444 if (audioOut > 255) audioOut = 255; | |
445 | |
446 audio_SetAmplf(AUDIO_MICROPHONE,(U8) audioIn); | |
447 audio_SetAmplf(AUDIO_SPEAKER,(U8) audioOut); | |
448 | |
449 return MfwResOk; | |
450 } | |
451 | |
452 | |
453 /* | |
454 +--------------------------------------------------------------------+ | |
455 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
456 | STATE : code ROUTINE : mmeRxInfo | | |
457 +--------------------------------------------------------------------+ | |
458 | |
459 PURPOSE : configure signal quality information: | |
460 request from the PS an indication on change of the | |
461 rx level with n intervalls. | |
462 Parameters mode and level are not used in the moment. | |
463 | |
464 */ | |
465 | |
466 void mmeRxInfo (U8 intervalls, U16 level) | |
467 { | |
468 rx_DCB_Type rx_DCB; | |
469 | |
470 rx_DCB.Steps = intervalls; | |
471 rx_SetConfig(&rx_DCB); | |
472 } | |
473 | |
474 | |
475 /* | |
476 +--------------------------------------------------------------------+ | |
477 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
478 | STATE : code ROUTINE : mmeBattInfo | | |
479 +--------------------------------------------------------------------+ | |
480 | |
481 PURPOSE : configure battery level information | |
482 | |
483 | |
484 */ | |
485 | |
486 void mmeBattInfo ( U8 intervalls, U16 level) | |
487 { | |
488 pwr_DCB_Type pwr_DCB; | |
489 | |
490 if (level > 255) level = 255; | |
491 | |
492 pwr_DCB.RangeMin = (U8) level; /* low level threshold */ | |
493 pwr_DCB.RangeMax = 100; /* 100 Percent */ | |
494 pwr_DCB.Steps = intervalls; /* n Steps */ | |
495 pwr_SetConfig(&pwr_DCB); | |
496 } | |
497 | |
498 | |
499 /* | |
500 +--------------------------------------------------------------------+ | |
501 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
502 | STATE : code ROUTINE : sigExec | | |
503 +--------------------------------------------------------------------+ | |
504 | |
505 PURPOSE : execute equipment signal | |
506 | |
507 */ | |
508 | |
509 static int sigExec (MfwHdr *curElem, U32 evt, U32 val) | |
510 { | |
511 MfwMme *ec; | |
512 | |
513 while (curElem) | |
514 { | |
515 if (curElem->type == MfwTypMme) | |
516 { | |
517 ec = curElem->data; | |
518 if (ec->map & evt) | |
519 { /* events match */ | |
520 ec->value = val; | |
521 if (ec->handler) /* handler valid */ | |
522 { | |
523 // PATCH LE 06.06.00 | |
524 // store current mfw elem | |
525 current_mfw_elem = curElem; | |
526 // END PATCH LE 06.06.00 | |
527 if ((*(ec->handler))(evt,ec)) | |
528 return 1; /* event consumed */ | |
529 } | |
530 } | |
531 } | |
532 curElem = curElem->next; | |
533 } | |
534 | |
535 return 0; | |
536 } | |
537 | |
538 | |
539 /* | |
540 +--------------------------------------------------------------------+ | |
541 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
542 | STATE : code ROUTINE : mmeSignal | | |
543 +--------------------------------------------------------------------+ | |
544 | |
545 PURPOSE : equipment event (called by driver/PEI) | |
546 | |
547 */ | |
548 | |
549 void mmeSignal (U32 evt, U32 value) | |
550 { | |
551 UBYTE temp; | |
552 | |
553 temp = dspl_Enable(0); | |
554 if (mfwSignallingMethod EQ 0) | |
555 { | |
556 if (mfwFocus) | |
557 if (sigExec(mfwFocus,evt,value)) | |
558 { | |
559 dspl_Enable(temp); | |
560 return; | |
561 } | |
562 if (mfwRoot) | |
563 sigExec(mfwRoot,evt,value); | |
564 } | |
565 else | |
566 { | |
567 MfwHdr * h = 0; | |
568 | |
569 /* | |
570 * Focus set, then start here | |
571 */ | |
572 if (mfwFocus) | |
573 h = mfwFocus; | |
574 /* | |
575 * Focus not set, then start root | |
576 */ | |
577 if (!h) | |
578 h = mfwRoot; | |
579 | |
580 /* | |
581 * No elements available, return | |
582 */ | |
583 | |
584 while (h) | |
585 | |
586 | |
587 { | |
588 /* | |
589 * Signal consumed, then return | |
590 */ | |
591 if (sigExec (h, evt, value)) | |
592 { | |
593 dspl_Enable(temp); | |
594 return; | |
595 } | |
596 | |
597 /* | |
598 * All windows tried inclusive root | |
599 */ | |
600 if (h == mfwRoot) | |
601 { | |
602 dspl_Enable(temp); | |
603 return; | |
604 } | |
605 | |
606 /* | |
607 * get parent window | |
608 */ | |
609 h = mfwParent(mfwParent(h)); | |
610 if(h) | |
611 h = ((MfwWin * )(h->data))->elems; | |
612 } | |
613 sigExec (mfwRoot, evt, value); | |
614 sigExec (mfwRoot, evt, value); | |
615 | |
616 } | |
617 dspl_Enable(temp); | |
618 return; | |
619 } | |
620 | |
621 | |
622 /* | |
623 +--------------------------------------------------------------------+ | |
624 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
625 | STATE : code ROUTINE : mmeCommand | | |
626 +--------------------------------------------------------------------+ | |
627 | |
628 PURPOSE : handle mfw windows command | |
629 | |
630 */ | |
631 | |
632 static int mmeCommand (U32 cmd, void *h) | |
633 { | |
634 switch (cmd) | |
635 { | |
636 case MfwCmdDelete: /* delete me */ | |
637 if (!h) | |
638 return 0; | |
639 mmeDelete(h); | |
640 return 1; | |
641 default: | |
642 break; | |
643 } | |
644 | |
645 return 0; | |
646 } | |
647 | |
648 | |
649 /* | |
650 +--------------------------------------------------------------------+ | |
651 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
652 | STATE : code ROUTINE : rAT_PercentSQ | | |
653 +--------------------------------------------------------------------+ | |
654 | |
655 PURPOSE : called by ACI on change of signal quality | |
656 | |
657 */ | |
658 | |
659 void rAT_PercentSQ (BYTE val) | |
660 { | |
661 TRACE_FUNCTION("rAT_PercentSQ()"); | |
662 | |
663 //ES!! no longer needed mmeSignal(MfwMmeSignal,val); | |
664 } | |
665 | |
666 | |
667 /* | |
668 +--------------------------------------------------------------------+ | |
669 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
670 | STATE : code ROUTINE : rAT_PercentBC | | |
671 +--------------------------------------------------------------------+ | |
672 | |
673 PURPOSE : called by ACI on change of battery status | |
674 | |
675 */ | |
676 | |
677 void rAT_PercentBC (BYTE val) | |
678 { | |
679 TRACE_FUNCTION("rAT_PercentBC()"); | |
680 | |
681 //ES!! no longer needed mmeSignal(MfwMmeBattery,val); | |
682 } | |
683 | |
684 | |
685 /* | |
686 +--------------------------------------------------------------------+ | |
687 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
688 | STATE : code ROUTINE : mmePrimHandler | | |
689 +--------------------------------------------------------------------+ | |
690 | |
691 PURPOSE : MME primitive handler | |
692 | |
693 */ | |
694 | |
695 static BOOL mmePrimHandler (USHORT opc, void *data) | |
696 { | |
697 U8 level; | |
698 U8 state; | |
699 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
700 #ifdef FF_MMI_AUDIO_PROFILE | |
701 U8 hdsData; | |
702 U8 cktData; | |
703 #endif | |
704 | |
705 | |
706 // TRACE_FUNCTION ("mmePrimHandler()"); | |
707 | |
708 switch (opc) | |
709 { | |
710 case MMI_RXLEV_IND: | |
711 level = ((T_MMI_RXLEV_IND *) data)->rxlev; | |
712 mmeSignal(MfwMmeSignal,level); | |
713 return TRUE; /* processed by MME, delete */ | |
714 case MMI_BATTERY_IND: | |
715 level = ((T_MMI_BATTERY_IND *) data)->volt; | |
716 state = ((T_MMI_BATTERY_IND *) data)->temp; | |
717 if (battLevel != level) | |
718 { | |
719 battLevel = level; | |
720 mmeSignal(MfwMmeBattery,level); | |
721 } | |
722 if (battState != state) | |
723 { | |
724 battState = state; | |
725 mmeSignal(MfwMmeBaState,state); | |
726 } | |
727 return TRUE; /* processed by MME, delete */ | |
728 // xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 | |
729 // the corresponding callback function is called in MMI context | |
730 // this comment will be removed once the sap for this is available | |
731 #ifdef FF_MMI_AUDIO_PROFILE | |
732 case MMI_HEADSET_IND: | |
733 TRACE_EVENT("MMI_HEADSET_IND"); | |
734 hdsData = ((T_MMI_HEADSET_IND *) data)->headset_status; | |
735 mmeSignal(MfwMmeHeadset,hdsData); | |
736 return TRUE; | |
737 case MMI_CARKIT_IND: | |
738 TRACE_EVENT("MMI_CARKIT_IND"); | |
739 cktData = ((T_MMI_CARKIT_IND *) data)->carkit_status; | |
740 mmeSignal(MfwMmeCarkit, cktData); | |
741 return TRUE; | |
742 #endif | |
743 } | |
744 | |
745 return FALSE; /* not processed, forward */ | |
746 } | |
747 | |
748 | |
749 /* | |
750 +--------------------------------------------------------------------+ | |
751 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
752 | STATE : code ROUTINE : mmeFlagHandler | | |
753 +--------------------------------------------------------------------+ | |
754 | |
755 PURPOSE : MME driver flag handler | |
756 | |
757 */ | |
758 | |
759 void mmeFlagHandler (void) | |
760 { | |
761 TRACE_FUNCTION ("mmeFlagHandler()"); | |
762 | |
763 while (mfwMmeDrvFlag) | |
764 { | |
765 if (mfwMmeDrvFlag & MmeFlagRtcAlarm) | |
766 { | |
767 mfwMmeDrvFlag &= ~MmeFlagRtcAlarm; | |
768 mmeSignal(MfwMmeRtcAlarm,0); | |
769 } | |
770 else if (mfwMmeDrvFlag & MmeFlagHdsDetect) | |
771 { | |
772 mfwMmeDrvFlag &= ~MmeFlagHdsDetect; | |
773 mmeSignal(MfwMmeHdsDetect,hdsPresence); | |
774 } | |
775 else if (mfwMmeDrvFlag & MmeFlagIrdaMsg) | |
776 { | |
777 } | |
778 else | |
779 { | |
780 mfwMmeDrvFlag = 0; | |
781 } | |
782 } | |
783 } | |
784 | |
785 | |
786 /* | |
787 +--------------------------------------------------------------------+ | |
788 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
789 | STATE : code ROUTINE : pwr_callback | | |
790 +--------------------------------------------------------------------+ | |
791 | |
792 PURPOSE : Called by battery driver | |
793 | |
794 */ | |
795 | |
796 static void pwrCb (drv_SignalID_Type *signal_params) | |
797 { | |
798 pwr_Status_Type *para; | |
799 PALLOC(battery_ind, MMI_BATTERY_IND); | |
800 | |
801 para = (pwr_Status_Type *) signal_params->UserData; | |
802 battery_ind->volt = para->BatteryLevel; | |
803 battery_ind->temp = para->Status; | |
804 | |
805 PSENDX(ACI,battery_ind); | |
806 } | |
807 | |
808 | |
809 /* | |
810 +--------------------------------------------------------------------+ | |
811 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
812 | STATE : code ROUTINE : rx_callback | | |
813 +--------------------------------------------------------------------+ | |
814 | |
815 PURPOSE : Called by fieldstrength driver | |
816 | |
817 */ | |
818 | |
819 static void rxCb (drv_SignalID_Type *signal_params) | |
820 { | |
821 rx_Status_Type *para; | |
822 PALLOC(rxlevel_ind,MMI_RXLEV_IND); | |
823 | |
824 para = (rx_Status_Type *) signal_params->UserData; | |
825 rxlevel_ind->rxlev = para->actLevel; | |
826 | |
827 PSENDX(ACI,rxlevel_ind); | |
828 } | |
829 | |
830 | |
831 /* | |
832 +--------------------------------------------------------------------+ | |
833 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
834 | STATE : code ROUTINE : rtcCb | | |
835 +--------------------------------------------------------------------+ | |
836 | |
837 PURPOSE : alarm callback from RTC | |
838 | |
839 */ | |
840 | |
841 static void rtcCb (drv_SignalID_Type *signal_params) | |
842 { | |
843 mfwMmeDrvFlag |= MmeFlagRtcAlarm; | |
844 vsi_c_awake(VSI_CALLER_SINGLE); | |
845 } | |
846 | |
847 | |
848 | |
849 /* | |
850 +--------------------------------------------------------------------+ | |
851 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
852 | STATE : code ROUTINE : hdsCb | | |
853 +--------------------------------------------------------------------+ | |
854 | |
855 PURPOSE : callback from headset detection | |
856 | |
857 */ | |
858 | |
859 static void hdsCb (drv_SignalID_Type *signal_params) | |
860 { | |
861 if (signal_params->SignalType == 1) | |
862 { | |
863 hdsPresence = (U16)signal_params->UserData; | |
864 mfwMmeDrvFlag |= MmeFlagHdsDetect; | |
865 vsi_c_awake(VSI_CALLER_SINGLE); | |
866 } | |
867 } | |
868 #ifdef FF_MMI_AUDIO_PROFILE | |
869 /* | |
870 +--------------------------------------------------------------------+ | |
871 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
872 | STATE : code ROUTINE : mfw_set_stereo_path | | |
873 +--------------------------------------------------------------------+ | |
874 | |
875 PURPOSE : This sets the stereo path for the current audio profile | |
876 | |
877 */ | |
878 | |
879 void mfw_set_stereo_path(int device) | |
880 { | |
881 TRACE_FUNCTION("mfw_set_stereo_path()"); | |
882 | |
883 TRACE_EVENT_P1("Device === %d", device); | |
884 switch(device) | |
885 { | |
886 case MFW_AUD_HEADSET: | |
887 audio_set_path(AUDIO_STEREO_SPEAKER_HEADPHONE, TRUE); | |
888 break; | |
889 case MFW_AUD_HANDHELD: | |
890 audio_set_path(AUDIO_STEREO_SPEAKER_HANDHELD, TRUE); | |
891 break; | |
892 case MFW_AUD_CARKIT: | |
893 audio_set_path(AUDIO_STEREO_SPEAKER_CARKIT, TRUE); | |
894 break; | |
895 case MFW_AUD_LOUDSPEAKER: | |
896 audio_set_path(AUDIO_STEREO_SPEAKER_HANDFREE, TRUE); | |
897 break; | |
898 } | |
899 } | |
900 /* | |
901 +--------------------------------------------------------------------+ | |
902 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
903 | STATE : code ROUTINE : mfw_unset_stereo_path | | |
904 +--------------------------------------------------------------------+ | |
905 | |
906 PURPOSE : This resets the voice path for the current audio profile | |
907 | |
908 */ | |
909 void mfw_unset_stereo_path(int device) | |
910 { | |
911 TRACE_FUNCTION("mfw_unset_stereo_path()"); | |
912 | |
913 TRACE_EVENT_P1("Device === %d", device); | |
914 switch(device) | |
915 { | |
916 case MFW_AUD_HEADSET: | |
917 audio_set_path(AUDIO_SPEAKER_HEADSET, FALSE); | |
918 break; | |
919 case MFW_AUD_HANDHELD: | |
920 audio_set_path(AUDIO_SPEAKER_HANDHELD, FALSE); | |
921 break; | |
922 case MFW_AUD_CARKIT: | |
923 audio_set_path(AUDIO_SPEAKER_CARKIT, FALSE); | |
924 break; | |
925 case MFW_AUD_LOUDSPEAKER: | |
926 audio_set_path(AUDIO_SPEAKER_HANDFREE, FALSE); | |
927 break; | |
928 } | |
929 } | |
930 | |
931 /* | |
932 +--------------------------------------------------------------------+ | |
933 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
934 | STATE : code ROUTINE : mfw_audio_headSet_indication | | |
935 +--------------------------------------------------------------------+ | |
936 | |
937 PURPOSE :Callback function for the events related to headset and create and post a primitive | |
938 | |
939 */ | |
940 void mfw_audio_headSet_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify, | |
941 ACCESSORY_CALLBACK_PARAM callbackparam ) | |
942 { | |
943 | |
944 PALLOC(hdsData,MMI_HEADSET_IND); | |
945 hdsData->headset_status = (U8)notify; | |
946 PSENDX(ACI,hdsData); | |
947 | |
948 } | |
949 /* | |
950 +--------------------------------------------------------------------+ | |
951 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
952 | STATE : code ROUTINE : mfw_audio_headSet_indication | | |
953 +--------------------------------------------------------------------+ | |
954 | |
955 PURPOSE :Callback function for the events related to carkit and create and post a primitive | |
956 | |
957 */ | |
958 void mfw_audio_carKit_indication ( T_AUDIO_ACCESSORY_NOTIFICATION notify, | |
959 ACCESSORY_CALLBACK_PARAM callback_param ) | |
960 { | |
961 PALLOC(cktData,MMI_CARKIT_IND); | |
962 cktData->carkit_status = (U8)notify; | |
963 PSENDX(ACI,cktData); | |
964 } | |
965 /* | |
966 +--------------------------------------------------------------------+ | |
967 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
968 | STATE : code ROUTINE : mfw_audio_headSet_indication | | |
969 +--------------------------------------------------------------------+ | |
970 | |
971 PURPOSE :handles the request to switch to the respective device from the | |
972 Bmi when the indications of insert and removal are received | |
973 | |
974 */ | |
975 void mfw_audio_device_indication( U8 notify) | |
976 { | |
977 TRACE_FUNCTION("mfw_audio_device_indication()"); | |
978 | |
979 TRACE_EVENT_P1(" Indication Type == %d",notify); | |
980 switch(notify) | |
981 { | |
982 case AUDIO_HEADSET_PLUGGED: | |
983 if(currAudioDevice != MFW_AUD_HEADSET) | |
984 { | |
985 mfw_audio_set_device(MFW_AUD_HEADSET); | |
986 headsetInserted = TRUE; | |
987 } | |
988 break; | |
989 case AUDIO_HEADSET_UNPLUGGED: | |
990 if( currAudioDevice == MFW_AUD_HEADSET) | |
991 { | |
992 mfw_audio_set_device(MFW_AUD_HANDHELD ); | |
993 | |
994 } | |
995 headsetInserted = FALSE; | |
996 break; | |
997 case AUDIO_HEADSET_HOOK_DETECT: | |
998 break; | |
999 case AUDIO_CARKIT_PLUGGED: | |
1000 if(currAudioDevice != MFW_AUD_CARKIT) | |
1001 { | |
1002 mfw_audio_set_device(MFW_AUD_CARKIT); | |
1003 carkitInserted = TRUE; | |
1004 } | |
1005 break; | |
1006 case AUDIO_CARKIT_UNPLUGGED: | |
1007 if( currAudioDevice == MFW_AUD_CARKIT) | |
1008 { | |
1009 if(headsetInserted == TRUE) | |
1010 { | |
1011 mfw_audio_set_device (MFW_AUD_HEADSET); | |
1012 } | |
1013 else | |
1014 { | |
1015 mfw_audio_set_device (MFW_AUD_HANDHELD); | |
1016 } | |
1017 } | |
1018 carkitInserted = FALSE; | |
1019 break; | |
1020 default: | |
1021 break; | |
1022 } | |
1023 } | |
1024 /* | |
1025 +--------------------------------------------------------------------+ | |
1026 | PROJECT : MMI-Framework (8417) MODULE : MFW_MME | | |
1027 | STATE : code ROUTINE : mfw_audio_headSet_indication | | |
1028 +--------------------------------------------------------------------+ | |
1029 | |
1030 PURPOSE :This function handles the switch between the handheld and loudspeaker. | |
1031 The type of device to be loaded will be posted from the menu selection | |
1032 When the profile changes if there is any other media played then the | |
1033 speaker should be set to stereo speaker | |
1034 | |
1035 */ | |
1036 void mfw_audio_set_device(int type) | |
1037 { | |
1038 /*Description: this array holds the file names on the ffs in which the audio profiles are stored. | |
1039 The file names are yet to be confirmed from the audio services group*/ | |
1040 //char aud_cg_file[4][15] = {"handheld","loudspeaker","headset","carkit"}; | |
1041 TRACE_FUNCTION("mfw_audio_set_device()"); | |
1042 | |
1043 TRACE_EVENT_P1("type of device = %d",type); | |
1044 switch(type) | |
1045 { | |
1046 case MFW_AUD_HANDHELD: | |
1047 audio_set_device((char*)HANDHELD);// (aud_cg_file[HANDHELD] ); | |
1048 currAudioDevice = MFW_AUD_HANDHELD; | |
1049 break; | |
1050 case MFW_AUD_LOUDSPEAKER: | |
1051 audio_set_device((char*) LOUDSPEAKER);//(aud_cg_file[LOUDSPEAKER]); | |
1052 currAudioDevice = MFW_AUD_LOUDSPEAKER; | |
1053 break; | |
1054 case MFW_AUD_HEADSET: | |
1055 audio_set_device((char*)HEADSET);//(aud_cg_file[HEADSET]); | |
1056 currAudioDevice = MFW_AUD_HEADSET; | |
1057 break; | |
1058 case MFW_AUD_CARKIT: | |
1059 audio_set_device((char*)CARKIT);//(aud_cg_file[CARKIT]); | |
1060 currAudioDevice = MFW_AUD_CARKIT; | |
1061 default: | |
1062 break; | |
1063 } | |
1064 if(TRUE == mfwAudPlay) | |
1065 mfw_set_stereo_path(currAudioDevice); | |
1066 | |
1067 } | |
1068 | |
1069 #ifdef ISAMPLE | |
1070 /* OMAPS00057367, 3 Dec 2005, nekkareb : start */ | |
1071 /* Function mfw_get_current_audioDevice modified to read the | |
1072 current audio device using the audio service entity function | |
1073 audio_full_access_read. This solves some synchronisation | |
1074 problems b/n Audio & MMI for the DR OMAPS00057367 */ | |
1075 /*returns the current active audio device*/ | |
1076 int mfw_get_current_audioDevice() | |
1077 { | |
1078 T_AUDIO_FULL_ACCESS_READ read; | |
1079 INT8 speaker; | |
1080 | |
1081 read.variable_indentifier = AUDIO_SPEAKER_MODE; | |
1082 read.data = &speaker; | |
1083 | |
1084 TRACE_FUNCTION("mfw_get_current_audioDevice()"); | |
1085 audio_full_access_read(&read ); | |
1086 | |
1087 switch(speaker) | |
1088 { | |
1089 case AUDIO_SPEAKER_NONE: | |
1090 TRACE_EVENT("mfw_get_current_audioDevice() - SPEAKER PATH NOT CONFIGURED"); | |
1091 currAudioDevice = MFW_AUD_HANDHELD; //Need to check the mapping | |
1092 break; | |
1093 case AUDIO_SPEAKER_HANDHELD: | |
1094 currAudioDevice = MFW_AUD_HANDHELD; | |
1095 break; | |
1096 case AUDIO_SPEAKER_HEADSET: | |
1097 currAudioDevice = MFW_AUD_HEADSET; | |
1098 break; | |
1099 case AUDIO_SPEAKER_AUX: | |
1100 currAudioDevice = MFW_AUD_LOUDSPEAKER; //Need to check the mapping | |
1101 break; | |
1102 case AUDIO_SPEAKER_CARKIT: | |
1103 currAudioDevice = MFW_AUD_CARKIT; | |
1104 break; | |
1105 case AUDIO_SPEAKER_HANDFREE: | |
1106 case AUDIO_SPEAKER_HANDFREE_CLASS_D: | |
1107 currAudioDevice = MFW_AUD_LOUDSPEAKER; | |
1108 break; | |
1109 case AUDIO_SPEAKER_INVERTED_VOICE: | |
1110 currAudioDevice = MFW_AUD_HEADSET; //Need to check the mapping | |
1111 break; | |
1112 } | |
1113 | |
1114 return currAudioDevice; | |
1115 } | |
1116 /* OMAPS00057367, 3 Dec 2005, nekkareb : end */ | |
1117 #else | |
1118 /*returns the current active audio device*/ | |
1119 int mfw_get_current_audioDevice() | |
1120 { | |
1121 TRACE_FUNCTION("mfw_get_current_audioDevice()"); | |
1122 return currAudioDevice; | |
1123 } | |
1124 #endif //ISAMPLE | |
1125 #endif | |
1126 | |
1127 |