?? main.c
字號:
stateManagerEnterConnDiscoverableState ( &theHeadset ) ;
}
break ;
case (EventPairingFail):
/*we have failed to pair in the alloted time - return to the connectable state*/
MAIN_DEBUG(("HS: Pairing Fail\n")) ;
stateManagerEnterConnectableState( &theHeadset, TRUE) ;
break ;
case ( EventPairingSuccessful):
MAIN_DEBUG(("HS: Pairing Successful\n")) ;
if (stateManagerGetState() == headsetConnDiscoverable)
{
stateManagerEnterConnectableState( &theHeadset , FALSE) ;
}
break ;
case ( EventEstablishSLC ) :
MAIN_DEBUG(("EventEstablishSLC\n")) ;
slcEstablishSLCRequest(&theHeadset , hfp_handsfree_profile) ;
break ;
/*can probably lose this now as the limbo state has its own built in timeout*/
case ( EventLEDEventComplete ) :
/*the message is a ptr to the event we have completed*/
MAIN_DEBUG(("HS : LEDEvCmp[%x]\n" , (( LMEndMessage_t *)message)->Event )) ;
if ( (( LMEndMessage_t *)message)->Event == EventResetPairedDeviceList )
{
/*then the reset has been completed*/
MessageSend(&theHeadset.task , EventResetComplete , 0 ) ;
/*Reboot if required*/
if (theHeadset.features.RebootAfterReset )
{
MAIN_DEBUG(("HS: Reboot After Reset\n")) ;
MessageSend ( &theHeadset.task , EventPowerOff , 0 ) ;
}
}
if (theHeadset.features.QueueLEDEvents )
{
/*if there is a queueud event*/
if (theHeadset.theLEDTask.Queue.Event1)
{
MAIN_DEBUG(("HS : Play Q'd Ev [%x]\n", (EVENTS_EVENT_BASE + theHeadset.theLEDTask.Queue.Event1) ));
MAIN_DEBUG(("HS : Queue [%x][%x][%x][%x]\n", theHeadset.theLEDTask.Queue.Event1,
theHeadset.theLEDTask.Queue.Event2,
theHeadset.theLEDTask.Queue.Event3,
theHeadset.theLEDTask.Queue.Event4
));
LEDManagerIndicateEvent (&theHeadset.theLEDTask , (EVENTS_EVENT_BASE + theHeadset.theLEDTask.Queue.Event1) ) ;
/*shuffle the queue*/
theHeadset.theLEDTask.Queue.Event1 = theHeadset.theLEDTask.Queue.Event2 ;
theHeadset.theLEDTask.Queue.Event2 = theHeadset.theLEDTask.Queue.Event3 ;
theHeadset.theLEDTask.Queue.Event3 = theHeadset.theLEDTask.Queue.Event4 ;
theHeadset.theLEDTask.Queue.Event4 = 0x00 ;
}
}
break ;
case (EventAutoSwitchOff):
MAIN_DEBUG(("HS: Auto S Off[%d] sec elapsed\n" , theHeadset.AutoSwitchOffTimeSecs )) ;
switch ( lState )
{
case headsetPoweringOn:
case headsetConnectable:
case headsetConnDiscoverable:
MessageSend ( task , EventPowerOff , 0) ;
break;
case headsetConnected:
case headsetOutgoingCallEstablish:
case headsetIncomingCallEstablish:
case headsetActiveCall:
case headsetTestMode:
break ;
default:
MAIN_DEBUG(("HS : UE ?s [%d]\n", lState));
break ;
}
break;
case (EventChargerConnected):
{
MAIN_DEBUG(("HS: Charger Connected\n"));
powerManagerChargerConnected(theHeadset.power);
if ( stateManagerGetState() == headsetPoweringOn )
{
stateManagerUpdateLimboState ( &theHeadset ) ;
}
}
break;
case (EventChargerDisconnected):
{
MAIN_DEBUG(("HS: Charger Disconnected\n"));
powerManagerChargerDisconnected(theHeadset.power);
if (stateManagerGetState() == headsetPoweringOn )
{
stateManagerUpdateLimboState ( &theHeadset ) ;
}
}
break;
case (EventResetPairedDeviceList):
{
MAIN_DEBUG(("HS: --Reset PDL--")) ;
if ( stateManagerIsConnected () )
{
/*then we have an SLC active*/
headsetDisconnectSlc( &theHeadset );
}
configManagerReset ( &theHeadset ) ;
}
break ;
case ( EventLimboTimeout ):
{
/*we have received a power on timeout - shutdown*/
MAIN_DEBUG(("HS: EvLimbo TIMEOUT\n")) ;
if (stateManagerGetState() != headsetTestMode)
{
stateManagerUpdateLimboState ( &theHeadset ) ;
}
}
break ;
case EventSLCDisconnected:
MAIN_DEBUG(("HS: EvSLCDisconnect\n")) ;
{
theHeadset.VoiceRecognitionIsActive = FALSE ;
MessageCancelAll ( &theHeadset.task , EventNetworkOrServiceNotPresent ) ;
}
break ;
case (EventLinkLoss):
MAIN_DEBUG(("HS: Link Loss\n")) ;
{
/*A Link Loss has occured -attempt reconnect*/
slcConnectAfterLinkLoss ( &theHeadset ) ;
}
break ;
case (EventMuteReminder) :
MAIN_DEBUG(("HS: Mute Remind\n")) ;
/*arrange the next mute reminder tone*/
soundManagerMuteRemind ( &theHeadset ) ;
break;
case EventLowBattery:
MAIN_DEBUG(("HS: EvLowBatt\n")) ;
break;
case EventTrickleCharge:
MAIN_DEBUG(("HS: EvTrickleChg\n")) ;
break;
case EventFastCharge:
MAIN_DEBUG(("HS: EvFastChg\n")) ;
break;
case EventOkBattery:
MAIN_DEBUG(("HS: EvBatOK\n")) ;
break;
/*************************************************************/
case EventEnterDUTState :
{
MAIN_DEBUG(("EnterDUTState \n")) ;
stateManagerEnterTestModeState (&theHeadset) ;
}
break;
case EventEnterDutMode :
{
MAIN_DEBUG(("Enter DUT Mode \n")) ;
if (stateManagerGetState() !=headsetTestMode)
{
MessageSend( task , EventEnterDUTState, 0 ) ;
}
enterDutMode () ;
}
break;
case EventEnterTXContTestMode :
{
MAIN_DEBUG(("Enter TX Cont \n")) ;
if (stateManagerGetState() !=headsetTestMode)
{
MessageSend( task , EventEnterDUTState , 0 ) ;
}
enterTxContinuousTestMode() ;
}
break ;
/*************************************************************/
case EventVolumeOrientationNormal:
theHeadset.theSoundTask.gVolButtonsInverted = FALSE ;
MAIN_DEBUG(("HS: VOL ORIENT NORMAL [%d]\n", theHeadset.theSoundTask.gVolButtonsInverted)) ;
/*write this to the PSKEY*/
configManagerWriteVolumeOrientation ( &theHeadset , FALSE ) ;
break;
case EventVolumeOrientationInvert:
theHeadset.theSoundTask.gVolButtonsInverted = TRUE ;
MAIN_DEBUG(("HS: VOL ORIENT INVERT[%d]\n", theHeadset.theSoundTask.gVolButtonsInverted)) ;
/*write this to the PSKEY*/
configManagerWriteVolumeOrientation ( &theHeadset , TRUE ) ;
break;
case EventToggleVolume:
theHeadset.theSoundTask.gVolButtonsInverted ^=1 ;
MAIN_DEBUG(("HS: Toggle Volume Orientation[%d]\n", theHeadset.theSoundTask.gVolButtonsInverted)) ;
break ;
/*network service indicators*/
case EventNetworkOrServiceNotPresent:
{
/*only bother to repeat this indication if it is not 0*/
if ( theHeadset.NetworkServiceIndicatorRepeatTimeSecs )
{
/*make sure only ever one in the system*/
MessageCancelAll( task , EventNetworkOrServiceNotPresent) ;
MessageSendLater ( task ,
EventNetworkOrServiceNotPresent ,
0 ,
D_SEC(theHeadset.NetworkServiceIndicatorRepeatTimeSecs) ) ;
}
MAIN_DEBUG(("HS: NO NETWORK [%d]\n", theHeadset.NetworkServiceIndicatorRepeatTimeSecs )) ;
}
break ;
case EventNetworkOrServicePresent:
{
MessageCancelAll ( task , EventNetworkOrServiceNotPresent ) ;
MAIN_DEBUG(("HS: YES NETWORK\n")) ;
}
break ;
case EventEnableDisableLeds :
MAIN_DEBUG(("HS: Toggle EN_DIS LEDS ")) ;
MAIN_DEBUG(("HS: Tog Was[%c]\n" , theHeadset.theLEDTask.gLEDSEnabled ? 'T' : 'F')) ;
LedManagerToggleLEDS ( &theHeadset.theLEDTask ) ;
MAIN_DEBUG(("HS: Tog Now[%c]\n" , theHeadset.theLEDTask.gLEDSEnabled ? 'T' : 'F')) ;
break ;
case EventEnableLEDS:
MAIN_DEBUG(("HS: Enable LEDS\n")) ;
LedManagerEnableLEDS ( &theHeadset.theLEDTask ) ;
break ;
case EventDisableLEDS:
MAIN_DEBUG(("HS: Disable LEDS\n")) ;
LedManagerDisableLEDS ( &theHeadset.theLEDTask ) ;
break ;
case EventCancelLedIndication:
MAIN_DEBUG(("HS: Disable LED indication\n")) ;
LedManagerResetLEDIndications ( &theHeadset.theLEDTask ) ;
break ;
case EventSLCConnected:
MAIN_DEBUG(("HS: EventSLCConnected\n")) ;
/*if there is a queued event - we might want to know*/
headsetRecallQueuedEvent ( &theHeadset ) ;
break;
case EventHSPEnterActiveCallState:
MAIN_DEBUG(("HS: HSP Enter Active Call State\n")) ;
{
if ( theHeadset.profile_connected == hfp_headset_profile)
{
if ( &theHeadset.sco_sink)
{
stateManagerEnterActiveCallState (&theHeadset) ;
}
}
}
break ;
case EventVLongTimer:
case EventLongTimer:
if (stateManagerGetState() == headsetPoweringOn)
{
lIndicateEvent = FALSE ;
}
break ;
case EventChargeError:
MAIN_DEBUG(("HS: EventChargerError \n")) ;
{ /*use the standard event if we are connected otherwise:*/
if (stateManagerGetState() != headsetActiveCall )
{
/*we are not connected so use the idle charger error event*/
lIndicateEvent = FALSE ;
MessageSend( task , EventChargeErrorInIdleState , 0 ) ;
}
}
break ;
/*these events have no required action directly associated with them */
/*they are received here so that LED patterns and Tones can be assigned*/
case EventSCOLinkOpen :
case EventSCOLinkClose:
case EventEndOfCall :
case EventResetComplete:
case EventError:
case EventChargeErrorInIdleState:
break;
/****************************************************/
/*3 way calling here for now*/ /*only processed if supported features says that we can*/
case EventThreeWayReleaseAllHeld:
MAIN_DEBUG(("HS3 : RELEASE ALL [%c]\n", TRUE_OR_FALSE(theHeadset.supp_features_local & HFP_THREE_WAY_CALLING))) ;
if (theHeadset.supp_features_local & HFP_THREE_WAY_CALLING)
{
HfpMultipleCallsReleaseHeldOrRejectWaiting (theHeadset.hfp) ;
}
break;
case EventThreeWayAcceptWaitingReleaseActive:
MAIN_DEBUG(("HS3 : ACCEPT & RELEASE [%c]\n", TRUE_OR_FALSE(theHeadset.supp_features_local & HFP_THREE_WAY_CALLING))) ;
if (theHeadset.supp_features_local & HFP_THREE_WAY_CALLING)
{
HfpMultipleCallsReleaseActiveAcceptOther ( theHeadset.hfp ) ;
}
break ;
case EventThreeWayAcceptWaitingHoldActive :
MAIN_DEBUG(("HS3 : ACCEPT & HOLD[%c]\n", TRUE_OR_FALSE(theHeadset.supp_features_local & HFP_THREE_WAY_CALLING))) ;
if (theHeadset.supp_features_local & HFP_THREE_WAY_CALLING)
{
HfpMultipleCallsHoldActiveAcceptOther ( theHeadset.hfp ) ;
}
break ;
case EventThreeWayAddHeldTo3Way :
MAIN_DEBUG(("HS3 : ADD HELD to 3WAY[%c]\n", TRUE_OR_FALSE(theHeadset.supp_features_local & HFP_THREE_WAY_CALLING))) ;
if (theHeadset.supp_features_local & HFP_THREE_WAY_CALLING)
{
HfpMultipleCallsAddHeldCall( theHeadset.hfp ) ;
}
break ;
case EventThreeWayConnect2Disconnect:
MAIN_DEBUG(("HS3 : EXPLICIT TRANSFER[%c]\n", TRUE_OR_FALSE(theHeadset.supp_features_local & HFP_THREE_WAY_CALLING))) ;
if (theHeadset.supp_features_local & HFP_THREE_WAY_CALLING)
{
HfpMultipleCallsExplicitCallTransfer(theHeadset.hfp) ;
}
break ;
/****************************************************/
case (EventEnablePowerOff):
{
MAIN_DEBUG(("HS: EventEnablePowerOff \n")) ;
theHeadset.PowerOffIsEnabled = TRUE ;
}
break;
case EventPlaceIncomingCallOnHold:
if (stateManagerGetState() == headsetIncomingCallEstablish)
{
MAIN_DEBUG(("HS: HoldIncomingCall [%d]\n" , stateManagerGetState() )) ;
HfpHoldIncomingCall(theHeadset.hfp);
}
break ;
case EventAcceptHeldIncomingCall:
if (stateManagerGetState() == headsetIncomingCallOnHold)
{
MAIN_DEBUG(("HS: AcceptHeldCall [%d]\n" , stateManagerGetState() )) ;
HfpAcceptHeldIncomingCall(theHeadset.hfp);
}
break ;
case EventRejectHeldIncomingCall:
if (stateManagerGetState() == headsetIncomingCallOnHold)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -