//-------------------------------------------------------------------------------------------------- static void DisconnectAudio ( void ) { if (AudioInputConnectorRef) { if (FeInRef) { LE_INFO("Disconnect %p from connector.%p", FeInRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FeInRef); } if(MdmTxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmTxAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, MdmTxAudioRef); } } if(AudioOutputConnectorRef) { if(FeOutRef) { LE_INFO("Disconnect %p from connector.%p", FeOutRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FeOutRef); } if(MdmRxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmRxAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, MdmRxAudioRef); } } if(AudioInputConnectorRef) { le_audio_DeleteConnector(AudioInputConnectorRef); AudioInputConnectorRef = NULL; } if(AudioOutputConnectorRef) { le_audio_DeleteConnector(AudioOutputConnectorRef); AudioOutputConnectorRef = NULL; } if(FeInRef) { le_audio_Close(FeInRef); FeInRef = NULL; } if(FeOutRef) { le_audio_Close(FeOutRef); FeOutRef = NULL; } if(MdmRxAudioRef) { le_audio_Close(MdmRxAudioRef); FeOutRef = NULL; } if(MdmTxAudioRef) { le_audio_Close(MdmTxAudioRef); FeOutRef = NULL; } }
//-------------------------------------------------------------------------------------------------- static void MyCallEventHandler ( le_mcc_CallRef_t callRef, le_mcc_Event_t callEvent, void* contextPtr ) { if (callEvent == LE_MCC_EVENT_ALERTING) { LE_INFO("Call event is LE_MCC_EVENT_ALERTING."); } else if (callEvent == LE_MCC_EVENT_CONNECTED) { LE_INFO("Call event is LE_MCC_EVENT_CONNECTED."); LE_INFO("Connect Remote Rec"); ConnectAudioToFileRec(); } else if (callEvent == LE_MCC_EVENT_TERMINATED) { LE_INFO("Call event is LE_MCC_EVENT_TERMINATED."); le_mcc_TerminationReason_t term = le_mcc_GetTerminationReason(callRef); switch(term) { case LE_MCC_TERM_NETWORK_FAIL: LE_INFO("Termination reason is LE_MCC_TERM_NETWORK_FAIL"); break; case LE_MCC_TERM_UNASSIGNED_NUMBER: LE_INFO("Termination reason is LE_MCC_TERM_UNASSIGNED_NUMBER"); break; case LE_MCC_TERM_USER_BUSY: LE_INFO("Termination reason is LE_MCC_TERM_USER_BUSY"); break; case LE_MCC_TERM_LOCAL_ENDED: LE_INFO("Termination reason is LE_MCC_TERM_LOCAL_ENDED"); break; case LE_MCC_TERM_REMOTE_ENDED: LE_INFO("Termination reason is LE_MCC_TERM_REMOTE_ENDED"); break; case LE_MCC_TERM_UNDEFINED: LE_INFO("Termination reason is LE_MCC_TERM_UNDEFINED"); break; default: LE_INFO("Termination reason is %d", term); break; } le_audio_Stop(FileAudioRef); le_audio_Disconnect(AudioOutputConnectorRef, FileAudioRef); le_audio_Disconnect(AudioInputConnectorRef, FileAudioRef); le_audio_Close(FileAudioRef); // 2-second pause: workaround to step over possible pcm_open error on AR8 platforms sleep(2); ConnectAudioToFileLocalPlay(); le_mcc_Delete(callRef); } else if (callEvent == LE_MCC_EVENT_INCOMING) { LE_INFO("Call event is LE_MCC_EVENT_INCOMING."); le_mcc_Answer(callRef); } else { LE_INFO("Other Call event.%d", callEvent); } }
//-------------------------------------------------------------------------------------------------- static void DisconnectAllAudio ( void ) { if (AudioInputConnectorRef) { if(FileAudioRef) { LE_INFO("Disconnect %p from connector.%p", FileAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FileAudioRef); } if (FeInRef) { LE_INFO("Disconnect %p from connector.%p", FeInRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FeInRef); } if(MdmTxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmTxAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, MdmTxAudioRef); } } if(AudioOutputConnectorRef) { if(FileAudioRef) { LE_INFO("Disconnect %p from connector.%p", FileAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FileAudioRef); } if(FeOutRef) { LE_INFO("Disconnect %p from connector.%p", FeOutRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FeOutRef); } if(MdmRxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmRxAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, MdmRxAudioRef); } } if(AudioInputConnectorRef) { le_audio_DeleteConnector(AudioInputConnectorRef); AudioInputConnectorRef = NULL; } if(AudioOutputConnectorRef) { le_audio_DeleteConnector(AudioOutputConnectorRef); AudioOutputConnectorRef = NULL; } if(FileAudioRef) { le_audio_Close(FileAudioRef); FeOutRef = NULL; } if(FeInRef) { le_audio_Close(FeInRef); FeInRef = NULL; } if(FeOutRef) { le_audio_Close(FeOutRef); FeOutRef = NULL; } if(MdmRxAudioRef) { le_audio_Close(MdmRxAudioRef); FeOutRef = NULL; } if(MdmTxAudioRef) { le_audio_Close(MdmTxAudioRef); FeOutRef = NULL; } if(MediaHandlerRef) { le_audio_RemoveMediaHandler(MediaHandlerRef); MediaHandlerRef = NULL; } // Closing AudioFileFd is unnecessary since the messaging infrastructure underneath // le_audio_xxx APIs that use it would close it. }
//-------------------------------------------------------------------------------------------------- static void DisconnectAllAudio ( void ) { if (AudioInputConnectorRef) { if(FileAudioRef) { LE_INFO("Disconnect %p from connector.%p", FileAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FileAudioRef); } if (FeInRef) { LE_INFO("Disconnect %p from connector.%p", FeInRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FeInRef); } if(MdmTxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmTxAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, MdmTxAudioRef); } } if(AudioOutputConnectorRef) { if(FileAudioRef) { LE_INFO("Disconnect %p from connector.%p", FileAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FileAudioRef); } if(FeOutRef) { LE_INFO("Disconnect %p from connector.%p", FeOutRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FeOutRef); } if(MdmRxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmRxAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, MdmRxAudioRef); } } if(AudioInputConnectorRef) { le_audio_DeleteConnector(AudioInputConnectorRef); AudioInputConnectorRef = NULL; } if(AudioOutputConnectorRef) { le_audio_DeleteConnector(AudioOutputConnectorRef); AudioOutputConnectorRef = NULL; } if(FileAudioRef) { le_audio_Close(FileAudioRef); FeOutRef = NULL; } if(FeInRef) { le_audio_Close(FeInRef); FeInRef = NULL; } if(FeOutRef) { le_audio_Close(FeOutRef); FeOutRef = NULL; } if(MdmRxAudioRef) { le_audio_Close(MdmRxAudioRef); FeOutRef = NULL; } if(MdmTxAudioRef) { le_audio_Close(MdmTxAudioRef); FeOutRef = NULL; } if(MediaHandlerRef) { le_audio_RemoveMediaHandler(MediaHandlerRef); MediaHandlerRef = NULL; } close(AudioFileFd); }
static void DisconnectAllAudio ( le_voicecall_CallRef_t reference ) { LE_DEBUG("DisconnectAllAudio"); MdmRxAudioRef = le_voicecall_GetRxAudioStream(reference); LE_ERROR_IF((MdmRxAudioRef==NULL), "le_voicecall_GetRxAudioStream returns NULL!"); MdmTxAudioRef = le_voicecall_GetTxAudioStream(reference); LE_ERROR_IF((MdmTxAudioRef==NULL), "le_voicecall_GetRxAudioStream returns NULL!"); if (AudioInputConnectorRef) { LE_INFO("Disconnect %p from connector.%p", FeInRef, AudioInputConnectorRef); if (FeInRef) { LE_INFO("Disconnect %p from connector.%p", FeInRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, FeInRef); } if(MdmTxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmTxAudioRef, AudioInputConnectorRef); le_audio_Disconnect(AudioInputConnectorRef, MdmTxAudioRef); } } if(AudioOutputConnectorRef) { LE_INFO("le_audio_Disconnect %p from connector.%p", MdmTxAudioRef, AudioOutputConnectorRef); if(FeOutRef) { LE_INFO("Disconnect %p from connector.%p", FeOutRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, FeOutRef); } if(MdmRxAudioRef) { LE_INFO("Disconnect %p from connector.%p", MdmRxAudioRef, AudioOutputConnectorRef); le_audio_Disconnect(AudioOutputConnectorRef, MdmRxAudioRef); } } if(AudioInputConnectorRef) { le_audio_DeleteConnector(AudioInputConnectorRef); AudioInputConnectorRef = NULL; } if(AudioOutputConnectorRef) { le_audio_DeleteConnector(AudioOutputConnectorRef); AudioOutputConnectorRef = NULL; } if(FeInRef) { le_audio_Close(FeInRef); FeInRef = NULL; } if(FeOutRef) { le_audio_Close(FeOutRef); FeOutRef = NULL; } if(MdmRxAudioRef) { le_audio_Close(MdmRxAudioRef); MdmRxAudioRef = NULL; } if(MdmTxAudioRef) { le_audio_Close(MdmTxAudioRef); MdmTxAudioRef = NULL; } }