📄 mmienvironment.c
字号:
StopPlayingMelody2( ); //glowing: use the new api
if(tone_status==TONE_BUSY)
StopTone();
MC_StopVibra(); // 2004.4.16 WYJ add
switch(reasonid)
{
case INCALL:
CurrentMode = CurrentMode & (~ModeIncomCall);
CurrentMode = CurrentMode & (~ModeCall);
CurrentMode = CurrentMode & (~ModeSms);
break;
case INCALLPLAY:
CurrentMode = CurrentMode & (~ModeIncomCall);
CurrentMode = CurrentMode & (~ModeCall);
CurrentMode = CurrentMode & (~ModeSms);
break;
case ALARMPLAY:
CurrentMode = CurrentMode & (~ModeAlarm);
CurrentMode = CurrentMode & (~ModeSms);
break;
case MENURINGPLAY:
CurrentMode = CurrentMode & (~ModeRingmnu);
break;
case SMSPLAY:
CurrentMode = CurrentMode & (~ModeSms);
break;
case VOICEMEMO:
CurrentMode = CurrentMode & (~ModeVoicememo);
break;
default:
break;
}
/* 2004/03/23 sunsj modify for stop led */
//glowing,2004-05-22, replace Green_Off as LEDOff()
// Green_Off();
LEDOff();
timStop(LedStartTimer);
#ifdef SEVEN_COLORS_LED
if(ServiceLedTimer)
{
timStart(ServiceLedTimer);
}
#endif
}
// -----------------------------------------------------------------------
// Function :StartPlayByReason
// Description :
// Input :
// Output :
// Notes :
// Last Modified:
// ------------------------------------------------------------------------
void StartPlayByReason(AUDIO_REASON reasonid, BOOLEANS index)
{
int smsringIndex1=0; //xsf add 2003.03.13
U8 keytone_type;
U8 keytone_volume;
switch(FlashEnvironmentData.CurrentEnv)
{
//情景模式
case NORMAL_ENV:
case OUTDOOR_ENV:
case MEETING_ENV:
case INCAR_ENV:
switch(reasonid)
{
case INCALL:
StopPlayByReasonId(INCALLPLAY);
CurrentMode = CurrentMode | ModeCall;
//xsf remarked it 2003.03.04SetASpk_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].speakervolume);
break;
case INCALLPLAYGROUP: // incoming call to play device
if(index & 0x80) //2004.12.18 WYJ add
index = FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].ringtype;
case INCALLPLAY:
if(CurrentMode & ModeCall) //in call
return;
CurrentMode = CurrentMode & (~ModeAlarm);
CurrentMode = CurrentMode & (~ModeRingmnu);
CurrentMode = CurrentMode | ModeIncomCall;
//if((index != 0) ||(index == 0 && tone_status == TONE_IDLE) )
StopPlayByReasonId(SMSPLAY);
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].ringvolume);
if(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].prompttype == RING)
//&& (melody_status==MELODY_IDLE))
{
StartPlayingMelody2( index, 0 ); //glowing: use the new api
}
else if((FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].prompttype == VIBRA)
&&(vibra_status!=VIBRA_BUSY))
{
l_playing=INCALLVIBRA;
StartVibrator();
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
else if(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].prompttype == VIBRARING)
{
if(vibra_status!=VIBRA_BUSY)
StartVibrator();
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
l_playing=INCALLPLAY;
}
else if(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].prompttype == RINGANDVIBRA)
{
StartPlayingMelody2(index,0); //glowing: use the new api
if(vibra_status!=VIBRA_BUSY)
{
StartVibrator();
l_playing=INCALLVIBRA;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
}
//MMI_TRACE_EVENT(("<<<<talcon,StartPlayByReason,hRingVibStartTimer:%p",hRingVibStartTimer));
//MMI_TRACE_EVENT(("<<<<talcon,StartPlayByReason,mfwRoot:%p(%p,%p,%p)",mfwRoot,mfwRoot->next,mfwRoot->type,mfwRoot->data));
break;
case SMSPLAY: // short message to play device
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall) ||call_win_flag) //xsf add call_win_flag 03.04.07
return;
//StopPlayByReasonId(SMSPLAY);
//CurrentMode = CurrentMode | ModeSms; //2004.3.30 WYJ fix MI18800000128
smsringIndex1 = FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].SMSTone;
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].smsvolume);
if((smsringIndex1 == SMSRING) && (tone_status!=TONE_BUSY))
StartTonebypara(PLAYTONE);
else if((smsringIndex1>= SPECIALRING1) && (smsringIndex1 <= SPECIALRING1+SMS_SUM-1))
//&& (melody_status==MELODY_IDLE))
{
//StartMelody2(SmsMelodyTablestr[(uint8)smsringIndex1-SPECIALRING1],0);
StartPlayingMelody2( SMS_MELODY_NORMAL + (uint8)smsringIndex1, 1); //glowing: use the yamaha api
}
else if((smsringIndex1 == SMSVIBRA) && (vibra_status!=VIBRA_BUSY))
{
//CurrentMode = CurrentMode | ModeSms;
StartVibrator();
l_playing=SMSPLAYVIB;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
else if(smsringIndex1 == SMSRVIBRA)
{
//CurrentMode = CurrentMode | ModeSms;
if(vibra_status!=VIBRA_BUSY)
StartVibrator();
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
l_playing=SMSPLAY;
}
break;
case ALARMPLAY: // alarm to play device
if(CurrentMode & ModeIncomCall)
return;
if(CurrentMode & ModeCall)
{
//StartSpecialTone(4);
return;
}
StopPlayByReasonId(SMSPLAY);
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].alarmvolume);
CurrentMode = CurrentMode | ModeAlarm;
if(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].alarmprompt == RING)
//&& (melody_status==MELODY_IDLE))
{
StartPlayingMelody2( FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].alarmtype, 0); //glowing: use the yamaha api 2004.4.2 WYJ fix MI18800000155
}
else if((FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].alarmprompt == VIBRA)
&&(vibra_status!=VIBRA_BUSY))
{
StartVibrator();
l_playing=INCALLVIBRA;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
break;
case MENURINGPLAY: // play device while adjusting ring volume or SetRingmode()/SetRingAndVib() in menu
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
//StopPlayByReasonId(MENURINGPLAY);
CurrentMode = CurrentMode | ModeRingmnu;
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringvolume);
//if(melody_status==MELODY_IDLE) //&& (tone_status == TONE_IDLE))
{
StartPlayingMelody2( FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringtype,0); //glowing: use the yamaha api
}
break;
case MENUALARMPLAY: // play device while adjusting alarm volume or SetAlarmRingmode() in menu
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
//StopPlayByReasonId(MENURINGPLAY);
//CurrentMode = CurrentMode | ModeRingmnu;
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].alarmvolume);
if(melody_status==MELODY_IDLE) //&& (tone_status == TONE_IDLE))
{
StartPlayingMelody2( FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].alarmtype,0); //glowing: use the yamaha api
}
break;
case MENUIDLEPLAY: //play device while adjusting ring volume in idle window
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
//StopPlayByReasonId(MENURINGPLAY);
CurrentMode = CurrentMode | ModeRingmnu;
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].ringvolume);
if(melody_status==MELODY_IDLE)// && (tone_status == TONE_IDLE))
{
StartPlayingMelody2( FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].ringtype,0); //glowing: use the yamaha api
}
break;
case MENUSETPLAY: //play device while adjusting ring volume in idle window
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
//StopPlayByReasonId(MENURINGPLAY);
if(melody_status==MELODY_IDLE)
{
if(FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringvolume<1)
FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringvolume = 3;
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringvolume); //FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringvolume);
StartPlayingMelody2( FlashEnvironmentData.EnviroProfile[Gu8_Envio_num].ringtype,0); //glowing: use the yamaha api
}
break;
case KEYPADTONE: //key beep when keypadTone is opened
/*
if((CurrentMode & ModeAlarm)||(CurrentMode & ModeSms))
return;
if(((CurrentMode & ModeIncomCall)||(CurrentMode & ModeCall)) && call_win_flag)
//if(driverFlag & 0x00000001 == 0x00000001)
return;
StartKeyBeep(index);
break;
*/
//2004.1.30 WYJ disable sound in main menu
if(gPlayKeytoneFlag==2 && FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].KeypadTone==2)
return;
//glowing, 2003-12-15, disable Play keytone
if( gPlayKeytoneFlag == 0 )
return;
if((CurrentMode & ModeAlarm)||(CurrentMode & ModeSms))
return;
if(((CurrentMode & ModeIncomCall)||(CurrentMode & ModeCall)) && call_win_flag)
//if(driverFlag & 0x00000001 == 0x00000001)
return;
//CurrentMode = CurrentMode & (~ModeMainMenu );
keytone_volume= FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].KeypadVolume;
if( keytone_volume == 0 || FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].KeypadTone==0)
return;
SetMVol_DownLinkPGA(keytone_volume);
keytone_type= FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].KeypadTone;
//if( keytone_type == 0 )
// StartKeyBeep(index);
//else
StartKeyVoice(keytone_type,index); //glowing: use the yamaha api
break;
case NEEDCHARGE: //need to charge tone (big tone)
if(CurrentMode & ModeCall)
{
//StartSpecialTone(2); //need to charge tone (small tone)
return;
}
else if(CurrentMode & ModeIncomCall) //xsf add 2003.04.15
{
//StartSpecialTone(3);
return;
}
else if(call_win_flag)
{
//StartSpecialTone(2); //need to charge tone (small tone)
return;
}
//if(FlashEnvironmentData.CurrentEnv == MEETING_ENV) //xsf add 2003.04.17
//{
// StartVibrator();
// l_playing=SMSPLAYVIB;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
// timStart( hRingVibStartTimer );
//}
//else
SetMVol_DownLinkPGA(3);
StartPlayingMelody2(NEEDCHARGE_WARNING, 1);
break;
//2004.4.9 wyj
#if 0
case MISSEDCALL: //missed call/calls tone every 5 minutes
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
if(FlashEnvironmentData.CurrentEnv == MEETING_ENV) //xsf add 2003.04.17
{
StartVibrator();
l_playing=SMSPLAYVIB;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
else
{
SetMVol_DownLinkPGA(4);
//StartTonebypara(3);
StartStdTone(3);
}
break;
case UNREADSMS: //unread new sms tone every 5 minutes
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall)||(CurrentMode & ModeSms))
return;
if(FlashEnvironmentData.CurrentEnv == MEETING_ENV) //xsf add 2003.04.17
{
StartVibrator();
l_playing=SMSPLAYVIB;
//TIMCREATE_SETFLLAG( hRingVibStartTimer = timCreate( 0, TIM4SECOND, (MfwCb)stopvib2playmelody);)// 2004.4.1 wyj call no win
timStart( hRingVibStartTimer );
}
else
{
SetMVol_DownLinkPGA(FlashEnvironmentData.EnviroProfile[FlashEnvironmentData.CurrentEnv].smsvolume);
StartTonebypara(2);
}
break;
#endif
case CONNECTTONE: //call connect tone
if(CurrentMode & ModeCall)
return;
SetMVol_DownLinkPGA(2);
StartPlayingMelody2(CONNENT_TONE, 1);
break;
case FULLHRALERT: //full hour alert
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall))
return;
// 2004.4.2 WYJ fix MI18800000168
SetMVol_DownLinkPGA(2);
StartPlayingMelody2(FULLHOUR_TONE, 1);
break;
case VOICEMEMO: //voice dial/memo
if((CurrentMode & ModeIncomCall) ||(CurrentMode & ModeAlarm)||(CurrentMode & ModeCall))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -