/**************************************************************************** Outcome of the RFCOMM connect request or response. */ static void aghfpHandleRfcommConnectCfm(AGHFP *aghfp, rfcomm_connect_status status) { /* Check the status of the rfcomm connect cfm */ if (status == rfcomm_connect_success) { /* RFCOMM connection is up! Check which profile is supported by this task */ if (supportedProfileIsHsp(aghfp->supported_profile)) { /* HSP supported - SLC is up so tell the app */ aghfpSendSlcConnectCfmToApp(aghfp_connect_success, aghfp); } else if (supportedProfileIsHfp(aghfp->supported_profile)) { /* HFP supported - RFCOMM is up, so just wait for HF to send us some AT commends */ } else { /* This should never happen */ AGHFP_DEBUG_PANIC(("Unhandled profile type 0x%x\n", aghfp->supported_profile)); } /* Check for data in the buffer */ aghfpHandleReceivedData(aghfp, StreamSourceFromSink(aghfp->rfcomm_sink)); } else { /* RFCOMM connect failed - Tell the app. */ aghfpSendSlcConnectCfmToApp(convertRfcommConnectStatus(status), aghfp); } aghfp->rfcomm_lock = FALSE; }
/**************************************************************************** NAME hfpHandleRfcommConnectCfm DESCRIPTION Outcome of the RFCOMM connect request or response. RETURNS void */ void hfpHandleRfcommConnectCfm(HFP *hfp, const CL_RFCOMM_CONNECT_CFM_T *cfm) { /* Check the status of the rfcomm connect cfm */ if (cfm->status == rfcomm_connect_success) { /* Store the sink */ hfp->sink = cfm->sink; /* RFCOMM connection is up! Check which profile is supported by this task */ if (supportedProfileIsHsp(hfp->hfpSupportedProfile)) { hfp->agSupportedProfile = hfp_headset_profile; /* HSP supported - SLC is up so tell the app */ hfpSendSlcConnectCfmToApp(hfp_connect_success, hfp); } else if (supportedProfileIsHfp(hfp->hfpSupportedProfile)) { /* Initiate SLC establishment */ MessageSend(&hfp->task, HFP_INTERNAL_AT_BRSF_REQ, 0); } else { /* This should never happen */ HFP_DEBUG(("Unhandled profile type 0x%x\n", hfp->hfpSupportedProfile)); } /* Check for data in the buffer */ hfpHandleReceivedData(hfp, StreamSourceFromSink(cfm->sink)); } else { /* RFCOMM connect failed - Tell the app. */ hfpSendSlcConnectCfmToApp(convertRfcommConnectStatus(cfm->status), hfp); } /* Free the rfcomm lock */ hfp->rfcomm_lock = FALSE; }