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

📄 headset_event_handler.c

📁 bc5_stereo:bluetooth stereo Headset CODE 支持A2DP HSP 和 HSP 。可作为车载免提。BlueLab 2007环境下编译
💻 C
📖 第 1 页 / 共 2 页
字号:
        hfpCallTransferToggle ( lApp ) ;
	    break ;
    case EventSCOLinkOpen :        
        EVENTS_DEBUG(("EventScoLinkOpen\n")) ;
        break ;
    case EventSCOLinkClose:        
        EVENTS_DEBUG(("EventScoLinkClose\n")) ;
        break ;        
    case EventResetPairedDeviceList:
        EVENTS_DEBUG(("EventResetPairedDeviceList\n")) ;                
        if ( stateManagerIsHfpConnected () )
        {
            /* Then we have an SLC active */
            hfpSlcDisconnect( lApp );
        }             
		if ( stateManagerIsA2dpConnected() )
    	{      
       		a2dpDisconnectRequest( lApp );
    	}
        configManagerReset ( lApp ) ;
        break ;
    case EventToggleMute:
        EVENTS_DEBUG(("EventToggleMute\n")) ;
        VolumeToggleMute( lApp ) ;
        break ;    
    case EventMuteOn :
        EVENTS_DEBUG(("EventMuteOn\n")) ;
        VolumeMuteOn ( lApp ) ;
        break ;
    case EventMuteOff:
        EVENTS_DEBUG(("EventMuteOff\n")) ;
        VolumeMuteOff ( lApp ) ;
        break ;
    case EventMuteReminder :        
        EVENTS_DEBUG(("EventMuteReminder\n")) ;
        MessageSendLater( &lApp->task , EventMuteReminder , 0 ,D_SEC(lApp->Timeouts.MuteRemindTime_s ) )  ;            
        break;
    case EventVolumeDown:
        EVENTS_DEBUG(("EventVolumeDown\n")) ;
        VolumeDown( lApp ) ;
        break;
    case EventVolumeUp:
        EVENTS_DEBUG(("EventVolumeUp\n")) ;
        VolumeUp( lApp ) ;
        break;
    case EventEnterDutState :
        EVENTS_DEBUG(("EnterDUTState\n")) ;
        stateManagerEnterTestModeState ( lApp ) ;                
        break;        
    case EventEnterDutMode :
        EVENTS_DEBUG(("EventEnterDutMode\n")) ;            
        if (lState != headsetTestMode)
            MessageSend( &lApp->task , EventEnterDutState, 0 ) ;
        ConnectionEnterDutMode();               
        break;  
    case (EventAutoSwitchOff):
        EVENTS_DEBUG(("EventAutoSwitchOff [%d] sec elapsed\n" , lApp->Timeouts.AutoSwitchOffTime_s )) ;
        switch ( lState )
            {                   
                case headsetHfpConnectable:
                case headsetConnDiscoverable:
					if (!stateManagerIsA2dpConnected() && !stateManagerIsAvrcpConnected())
	                    MessageSend ( &lApp->task , EventPowerOff , 0) ;
                    break;

				case headsetPoweringOn:
                case headsetHfpConnected:
                case headsetOutgoingCallEstablish:   
                case headsetIncomingCallEstablish:   
                case headsetActiveCall:            
                case headsetTestMode:
                    break ;
                default:
                    EVENTS_DEBUG(("HS : UE ?s [%d]\n", lState));
                    break ;
            }
        break;
    case EventResetComplete:
        EVENTS_DEBUG(("EventResetComplete\n"));
        break;
    case EventError:        
        EVENTS_DEBUG(("EventError\n")) ;
        break;
    case EventEnableLEDS:
        EVENTS_DEBUG(("EventEnableLEDS\n")) ;
        LedManagerEnableLEDS ( &lApp->theLEDTask ) ;        
        break ;
    case EventDisableLEDS:
        EVENTS_DEBUG(("EventDisableLEDS\n")) ;            
        LedManagerDisableLEDS ( &lApp->theLEDTask ) ;            
        break ;
    case EventEnablePowerOff:
        EVENTS_DEBUG(("EventEnablePowerOff\n")) ;  
        break;
    case EventChargeError:
        EVENTS_DEBUG(("EventChargeError\n")) ;  
        break;
    case EventEndOfCall :        
        EVENTS_DEBUG(("EventEndOfCall\n")) ;
        break;    
	case EventEstablishA2dp:
		EVENTS_DEBUG(("EventEstablishA2dp %d\n",lApp->slcConnectFromPowerOn)) ;
		
		/* Don't indicate event if it's from power on */
		if (lApp->slcConnectFromPowerOn)
			lIndicateEvent = FALSE ;
		
		/* Only send a connect request if the headset isn't currently connecting A2DP and the headset
		   is on and not in pairing mode.
		*/
		if ( (stateManagerGetHfpState() >= headsetHfpConnectable) && !a2dpIsConnecting(lApp) )
		{
			if ( !stateManagerIsA2dpConnected() || lApp->slcConnectFromPowerOn )
			{
				/* Use reconnect sequence */ 
				a2dpReconnectProcedure(lApp);
			}
			else
			{
				/* Signalling is connected, but now check if the media is connected. */
				if (lApp->a2dp.sink)
				{
					/* Signalling and media both connected */
					EVENTS_DEBUG(("EventEstablishA2dp - Ignored as already connected\n")) ;
            		/*do not perform the action*/
            		lIndicateEvent = FALSE ;
				}
				else
				{
					/* Media not connected so do it now */
					a2dpConnectRequest(lApp, TRUE);
				}
			}
		}
		else
        {
            EVENTS_DEBUG(("EventEstablishA2dp - Ignored\n")) ;
            /*do not perform the action*/
            lIndicateEvent = FALSE ;
        } 
		
		lApp->slcConnectFromPowerOn = FALSE;
		
        break;
	case EventA2dpConnected:
        EVENTS_DEBUG(("EventA2dpConnected\n")) ;		
        break;    
	case EventA2dpDisconnected:
        EVENTS_DEBUG(("EventA2dpDisconnected\n")) ;		
        break; 
	case EventVolumeMax:
		EVENTS_DEBUG(("EventVolumeMax\n"));
		break;
	case EventVolumeMin:
		EVENTS_DEBUG(("EventVolumeMin\n"));
		break;
	case EventPlay:
		EVENTS_DEBUG(("EventPlay\n"));
		/* Always indicate play event as will try to connect A2DP if not already connected */
		avrcpEventPlay(lApp);		
		break;
	case EventPause:
		EVENTS_DEBUG(("EventPause\n"));
		/* Only indicate event if AVRCP connected */
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventPause(lApp);		
		}
		else
		{
			EVENTS_DEBUG(("EventPause - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventStop:
		EVENTS_DEBUG(("EventStop\n"));
		/* Only indicate event if AVRCP connected */
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventStop(lApp);		
		}
		else
		{
			EVENTS_DEBUG(("EventStop - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventSkipForward:
		EVENTS_DEBUG(("EventSkipForward\n"));
		/* Only indicate event if AVRCP connected */
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventSkipForward(lApp);
		}
		else
		{
			EVENTS_DEBUG(("EventSkipForward - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventSkipBackward:
		EVENTS_DEBUG(("EventSkipBackward\n"));
		/* Only indicate event if AVRCP connected */
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventSkipBackward(lApp);	
		}
		else
		{
			EVENTS_DEBUG(("EventSkipBackward - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventFFWDPress:
		EVENTS_DEBUG(("EventFFWDPress\n"));
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventFastForwardPress(lApp);
		}
		else
		{
			EVENTS_DEBUG(("EventFFWDPress - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventFFWDRelease:
		EVENTS_DEBUG(("EventFFWDRelease\n"));
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventFastForwardRelease(lApp);
		}
		else
		{
			EVENTS_DEBUG(("EEventFFWDRelease - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventRWDPress:
		EVENTS_DEBUG(("EventRWDPress\n"));
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventFastRewindPress(lApp);
		}
		else
		{
			EVENTS_DEBUG(("EventRWDPress - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
	case EventRWDRelease:
		EVENTS_DEBUG(("EventRWDRelease\n"));
		if ( stateManagerIsAvrcpConnected() )
		{
			avrcpEventFastRewindRelease(lApp);
		}
		else
		{
			EVENTS_DEBUG(("EEventRWDRelease - Ignored\n")) ;
			lIndicateEvent = FALSE ;
		}
		break;
		
    default:
        EVENTS_DEBUG(("UNHANDLED EVENT: 0x%x\n",id));
        lIndicateEvent = FALSE ;
        break;
    }    
    
    if ( lIndicateEvent )
    {
        LEDManagerIndicateEvent ( &lApp->theLEDTask , id ) ;
                 
        TonesPlayEvent ( lApp , id ) ;		
    }   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -