📄 main.c
字号:
case EventAcceptHeldIncomingCall: if (stateManagerGetState() == headsetIncomingCallOnHold) { MAIN_DEBUG(("HS: AcceptHeldCall [%d]\n" , stateManagerGetState() )) ; HfpAcceptHeldIncomingCall(theHeadset.hfp); } break ; case EventRejectHeldIncomingCall: if (stateManagerGetState() == headsetIncomingCallOnHold) { MAIN_DEBUG(("HS: RejectHeldCall [%d]\n" , stateManagerGetState() )) ; HfpRejectHeldIncomingCall(theHeadset.hfp); } break; /******************************************************************//******************************************************************/ default : MAIN_DEBUG (( "HS : UE !! [%x]\n", id )); break ; /******************************************************************//******************************************************************/ } /* Inform theevent indications that we have received a user event*/ /* For all events except the end event notification as this will just end up here again calling itself...*/ if ( lIndicateEvent == TRUE ) { if ( id != EventLEDEventComplete ) { LEDManagerIndicateEvent ( &theHeadset.theLEDTask , id ) ; } soundManagerIndicateEvent ( &theHeadset , id ) ; } }/*************************************************************************NAME handleHFPMessageDESCRIPTION handles the messages from the user eventsRETURNS*/static void handleHFPMessage ( Task task, MessageId id, Message message ){ headsetState current_headset_state = stateManagerGetState(); uint16 i = 0; switch(id) { /* -- Handsfree Profile Library Messages -- */ case HFP_INIT_CFM: MAIN_DEBUG(("HFP_INIT_CFM\n")); switch(current_headset_state) { case headsetPoweringOn: { HFP_INIT_CFM_T *msg = (HFP_INIT_CFM_T *) message; if (msg->status == hfp_success) headsetInitComplete(&theHeadset, msg); else Panic(); } break; case headsetConnectable: case headsetConnDiscoverable: case headsetConnected: case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_SLC_CONNECT_IND: MAIN_DEBUG(("HFP_SLC_CONNECT_IND\n")); switch(current_headset_state) { case headsetConnectable: case headsetConnDiscoverable: case headsetConnected: case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: headsetHandleSlcConnectInd(&theHeadset, (HFP_SLC_CONNECT_IND_T *) message); break; case headsetPoweringOn: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_SLC_CONNECT_CFM: MAIN_DEBUG(("HFP_SLC_CONNECT_CFM [%x]\n", ((HFP_SLC_CONNECT_CFM_T *) message)->status )); switch(current_headset_state) { case headsetConnectable: case headsetConnDiscoverable: case headsetConnected: case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: case headsetThreeWayCallWaiting: case headsetThreeWayCallOnHold: case headsetThreeWayMulticall: headsetHandleSlcConnectCfm(&theHeadset, (HFP_SLC_CONNECT_CFM_T *) message); break; case headsetPoweringOn: if ( ((HFP_SLC_CONNECT_CFM_T *) message)->status == hfp_success ) { /*A connection has been made and we are now logically off*/ headsetDisconnectSlc( &theHeadset ); } break; default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_SLC_DISCONNECT_IND: MAIN_DEBUG(("HFP_SLC_DISCONNECT_IND\n")); switch(current_headset_state) { case headsetConnDiscoverable: case headsetConnected: case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: case headsetPoweringOn: case headsetThreeWayCallWaiting: case headsetThreeWayCallOnHold: case headsetThreeWayMulticall: headsetHandleSlcDisconnectInd(&theHeadset, (HFP_SLC_DISCONNECT_IND_T *) message); break; case headsetTestMode: case headsetConnectable: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_IN_BAND_RING_IND: /*store the in band ring Information*/ theHeadset.RingInfo.InBandRingEnabled = ((HFP_IN_BAND_RING_IND_T*)message)->ring_enabled ; MAIN_DEBUG(("HFP_IN_BAND_RING_IND [%c]\n" ,theHeadset.RingInfo.InBandRingEnabled ? 'T' : 'F')); break ; case HFP_SERVICE_IND: MAIN_DEBUG(("HFP_SERVICE_IND [%x]\n" , ((HFP_SERVICE_IND_T*)message)->service )); { headsetHandleServiceIndicator ( &theHeadset , ((HFP_SERVICE_IND_T*)message) ) ; } break; case HFP_CALL_IND: MAIN_DEBUG(("HFP_CALL_IND [%d]\n",((HFP_CALL_IND_T *)message)->call )); /* 0 no call active - 1 call active*/ switch(current_headset_state) { case headsetIncomingCallEstablish: case headsetOutgoingCallEstablish: case headsetActiveCall: /* Some phones send this message before the SLC connect cfm on a call transfer*/ case headsetConnDiscoverable: case headsetConnectable: case headsetConnected: headsetHandleCallInd ( &theHeadset , (HFP_CALL_IND_T *)message ) ; break ; case headsetThreeWayCallWaiting: case headsetThreeWayCallOnHold: case headsetThreeWayMulticall: headsetHandleThreeCallInd ( &theHeadset , (HFP_CALL_IND_T * )message ) ; break ; case headsetPoweringOn: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_CALL_SETUP_IND: MAIN_DEBUG(("HFP_CALL_SETUP_IND [%d]\n", ((HFP_CALL_SETUP_IND_T * )message)->call_setup )); switch(current_headset_state) { case headsetConnDiscoverable: case headsetConnected: case headsetConnectable: case headsetIncomingCallEstablish: case headsetOutgoingCallEstablish: headsetHandleCallSetupInd ( &theHeadset , (HFP_CALL_SETUP_IND_T * )message ) ; break ; case headsetThreeWayCallWaiting: case headsetThreeWayCallOnHold: case headsetThreeWayMulticall: headsetHandleThreeCallSetupInd ( &theHeadset , (HFP_CALL_SETUP_IND_T * )message ) ; break; case headsetPoweringOn: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_RING_IND: MAIN_DEBUG(("HFP_RING_IND\n")); switch(current_headset_state) { case headsetConnected: case headsetIncomingCallEstablish: case headsetActiveCall: case headsetThreeWayCallWaiting: case headsetThreeWayCallOnHold: case headsetThreeWayMulticall: headsetHandleRingInd(&theHeadset,(HFP_RING_IND_T *)(message)) ; break ; case headsetConnDiscoverable: case headsetOutgoingCallEstablish: case headsetPoweringOn: case headsetConnectable: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_LAST_NUMBER_REDIAL_CFM: MAIN_DEBUG(("HFP_LAST_NUMBER_REDIAL_CFM\n")); handleHFPStatusCFM (&theHeadset , ((HFP_LAST_NUMBER_REDIAL_CFM_T*)message)->status ) ; break; case HFP_DIAL_NUMBER_CFM: MAIN_DEBUG(("HFP_DIAL_NUMBER_CFM %d %d\n", current_headset_state, ((HFP_DIAL_NUMBER_CFM_T *) message)->status)); break; case HFP_DIAL_MEMORY_CFM: MAIN_DEBUG(("HFP_DIAL_MEMORY_CFM %d %d\n", current_headset_state, ((HFP_DIAL_MEMORY_CFM_T *) message)->status)); break ; case HFP_ANSWER_CALL_CFM: MAIN_DEBUG(("HFP_ANSWER_CALL_CFM\n")); break; case HFP_REJECT_CALL_CFM: MAIN_DEBUG(("HFP_REJECT_CALL_CFM\n")); break; case HFP_TERMINATE_CALL_CFM: MAIN_DEBUG(("HFP_TERMINATE_CALL_CFM %d\n", current_headset_state)); switch(current_headset_state) { case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: stateManagerEnterConnectedState ( &theHeadset ) ; break ; case headsetConnected: case headsetConnDiscoverable: case headsetPoweringOn: case headsetConnectable: default: unhandledHeadsetState(current_headset_state, id); break ; } break; case HFP_VOICE_RECOGNITION_IND: MAIN_DEBUG(("HS: HFP_VOICE_RECOGNITION_IND_T [%c]\n" ,TRUE_OR_FALSE( ((HFP_VOICE_RECOGNITION_IND_T* )message)->enable) )) ; /*update the state of the voice dialling on the back of the indication*/ theHeadset.VoiceRecognitionIsActive = ((HFP_VOICE_RECOGNITION_IND_T* ) message)->enable ; break; case HFP_VOICE_RECOGNITION_ENABLE_CFM: MAIN_DEBUG(("HFP_VOICE_RECOGNITION_ENABLE_CFM s[%d] w[%d]i", (((HFP_VOICE_RECOGNITION_ENABLE_CFM_T *)message)->status ) , theHeadset.VoiceRecognitionIsActive)); /*if the cfm is in error then we did not succeed - toggle */ if ( (((HFP_VOICE_RECOGNITION_ENABLE_CFM_T *)message)->status ) ) theHeadset.VoiceRecognitionIsActive ^= 1 ; MAIN_DEBUG(("[%d]\n", theHeadset.VoiceRecognitionIsActive)); handleHFPStatusCFM (&theHeadset , ((HFP_VOICE_RECOGNITION_ENABLE_CFM_T *)message)->status ) ; break; case HFP_SINK_CFM: MAIN_DEBUG(("HFP_SINK_CFM\n")); switch(current_headset_state) { case headsetConnected: case headsetOutgoingCallEstablish: case headsetIncomingCallEstablish: case headsetActiveCall: MAIN_DEBUG(("Main: Handle Sink\n")) ; /*headsetHandleSinkCfm ( (const HFP_SINK_CFM_T *) ( message ) ) ;*/ break ; case headsetPoweringOn: case headsetConnectable: case headsetConnDiscoverable: default: unhandledHeadsetState(current_headset_state, id); } break; case HFP_CALLER_ID_ENABLE_CFM: MAIN_DEBUG(("HFP_CALLER_ID_ENABLE_CFM\n")); break; case HFP_SPEAKER_VOLUME_CFM: MAIN_DEBUG(("HFP_SPEAKER_VOLUME_CFM\n")); break; case HFP_SPEAKER_VOLUME_IND: MAIN_DEBUG(("HFP_SPEAKER_VOLUME_IND %d\n", ((HFP_SPEAKER_VOLUME_IND_T *) message)->volume_gain)); soundManagerHandleVolumeInd ( &theHeadset , ((HFP_SPEAKER_VOLUME_IND_T *) message)->volume_gain ) ; break; case HFP_MICROPHONE_VOLUME_CFM: MAIN_DEBUG(("HFP_MICROPHONE_VOLUME_CFM\n")); break; case HFP_MICROPHONE_VOLUME_IND: MAIN_DEBUG(("HFP_MICROPHONE_VOLUME_IND %d\n", ((HFP_MICROPHONE_VOLUME_IND_T *) message)->mic_gain)); soundManagerHandleMicInd ( &theHeadset ,((HFP_MICROPHONE_VOLUME_IND_T *) message)->mic_gain ) ; break; case HFP_CALLER_ID_IND: MAIN_DEBUG(("HFP_CALLER_ID_IND\n")); { uint16 i; HFP_CALLER_ID_IND_T *ind = (HFP_CALLER_ID_IND_T *) message; MAIN_DEBUG(("HFP_CALLER_ID_IND len %d\n", ind->size_caller_number)); for (i=0; i < ind->size_caller_number; i++) { MAIN_DEBUG(("%c", ind->caller_number[i])); } MAIN_DEBUG(("\n")); } break; case HFP_UNRECOGNISED_AT_CMD_IND: { MAIN_DEBUG(("HFP_UNRECOGNISED_AT_CMD_IND_T " )) ; for (i=0 ; i< ((HFP_UNRECOGNISED_AT_CMD_IND_T *)message)->size_data ; i++) { MAIN_DEBUG(("[%c]" ,((HFP_UNRECOGNISED_AT_CMD_IND_T *)message)->data[i] )) ; } } break ; case HFP_HS_BUTTON_PRESS_CFM: { MAIN_DEBUG(("HFP_HS_BUTTON_PRESS_CFM\n")) ; } break ; /*****************************************************************/ case HFP_CALL_WAITING_ENABLE_CFM : MAIN_DEBUG(("HS3 : HFP_CALL_WAITING_ENABLE_CFM_T [%c]\n", (((HFP_CALL_WAITING_ENABLE_CFM_T * )message)->status == hfp_success) ?'T':'F' )) ; headsetHandleThreeCallWaitingCfm (&theHeadset , (HFP_CALL_WAITING_ENABLE_CFM_T * )message ) ; break ; case HFP_CALL_WAITING_IND: { uint16 i; HFP_CALL_WAITING_IND_T * ind = (HFP_CALL_WAITING_IND_T *) message; MAIN_DEBUG(("HS3 : HFP_CALL_WAITING_IND len %d\n", ind->size_caller_number)); for (i=0; i < ind->size_caller_number; i++) { MAIN_DEBUG(("%c", ind->caller_number[i])); } MAIN_DEBUG(("\n")); /*at this point - we know that we have a second incoming call*/ headsetHandleThreeCallWaitingInd (&theHeadset , ind ) ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -