bool WaveOutPulseAudio::CloseWaveOutDevice() { bool tResult = false; int tRes; LOG(LOG_VERBOSE, "Going to close.."); if (mWaveOutOpened) { StopFilePlayback(); Stop(); if (mOutputStream != NULL) { LOG(LOG_VERBOSE, "..draining stream"); if (pa_simple_drain(mOutputStream, &tRes) < 0) { LOG(LOG_ERROR, "Couldn't drain the output stream because %s(%d)", pa_strerror(tRes), tRes); } LOG(LOG_VERBOSE, "..closing stream"); pa_simple_free(mOutputStream); } LOG(LOG_INFO, "...closed"); mWaveOutOpened = false; tResult = true; }else LOG(LOG_INFO, "...wasn't open"); ResetPacketStatistic(); return tResult; }
//-------------------------------------------------------------------------------------------------- static void MyCallEventHandler ( le_mcc_CallRef_t callRef, le_mcc_Event_t callEvent, void* contextPtr ) { le_result_t res; if (callEvent == LE_MCC_EVENT_ALERTING) { LE_INFO("Call event is LE_MCC_EVENT_ALERTING."); StopFilePlayback(); PlayFile(RINGTONE, true); } else if (callEvent == LE_MCC_EVENT_CONNECTED) { LE_INFO("Call event is LE_MCC_EVENT_CONNECTED."); StopFilePlayback(); // Connect voice call to audio res = le_audio_Connect(AudioInputConnectorRef, MdmTxAudioRef); LE_ERROR_IF((res!=LE_OK), "Failed to connect mdmTx on Input connector!"); res = le_audio_Connect(AudioOutputConnectorRef, MdmRxAudioRef); LE_ERROR_IF((res!=LE_OK), "Failed to connect mdmRx on Output connector!"); } 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_LOCAL_ENDED: case LE_MCC_TERM_REMOTE_ENDED: LE_INFO("Termination reason is LE_MCC_TERM_REMOTE_ENDED or LE_MCC_TERM_LOCAL_ENDED"); break; case LE_MCC_TERM_NETWORK_FAIL: case LE_MCC_TERM_UNASSIGNED_NUMBER: case LE_MCC_TERM_USER_BUSY: case LE_MCC_TERM_UNDEFINED: default: LE_INFO("Termination reason is %d", term); StopFilePlayback(); break; } PlayFile(VOICE_PROMPT_END, false); le_mcc_Delete(callRef); if (callRef == TestCallRef) { TestCallRef = NULL; } } else if (callEvent == LE_MCC_EVENT_INCOMING) { LE_INFO("Call event is LE_MCC_EVENT_INCOMING."); } else { LE_INFO("Unknowm Call event."); } }