⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmienvironment.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        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 + -