int ril_set_call_audio_path(struct ril_handle *ril, enum ril_audio_path path) { LOGD("%s: path=%d", __func__, path); if (ril_connect_if_required(ril)) return 0; return _ril_set_call_audio_path(ril->client, path); }
int audio_ril_interface_set_route(struct tinyalsa_audio_ril_interface *ril_interface, audio_devices_t device) { int rc; enum ril_audio_path path; ALOGD("%s(%d)", __func__, device); if(ril_interface == NULL) return -1; pthread_mutex_lock(&ril_interface->lock); /* Should this be returning -1 when a failure occurs? */ if (audio_ril_interface_connect_if_required(ril_interface)) return 0; ril_interface->device_current = device; if(_ril_set_call_audio_path == NULL) goto error; switch((int) device) { case AUDIO_DEVICE_OUT_EARPIECE: path = SOUND_AUDIO_PATH_HANDSET; break; case AUDIO_DEVICE_OUT_SPEAKER: path = SOUND_AUDIO_PATH_SPEAKER; break; case AUDIO_DEVICE_OUT_WIRED_HEADSET: path = SOUND_AUDIO_PATH_HEADSET; break; case AUDIO_DEVICE_OUT_WIRED_HEADPHONE: path = SOUND_AUDIO_PATH_HEADPHONE; break; // FIXME: Bluetooth values/path relation case AUDIO_DEVICE_OUT_BLUETOOTH_SCO: case AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET: case AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT: path = SOUND_AUDIO_PATH_BLUETOOTH; case AUDIO_DEVICE_OUT_BLUETOOTH_A2DP: case AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES: case AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER: path = SOUND_AUDIO_PATH_BLUETOOTH_NO_NR; break; default: path = SOUND_AUDIO_PATH_HANDSET; break; } rc = _ril_set_call_audio_path(ril_interface->interface,path); if(rc < 0) { ALOGE("Failed to set RIL interface route"); goto error; } pthread_mutex_unlock(&ril_interface->lock); return 0; error: pthread_mutex_unlock(&ril_interface->lock); return -1; }