void audio_ril_interface_close(struct audio_hw_device *dev, struct tinyalsa_audio_ril_interface *ril_interface) { struct tinyalsa_audio_device *tinyalsa_audio_device; ALOGD("%s(%p)", __func__, ril_interface); if(ril_interface->dl_handle != NULL) { if ((_ril_disconnect(ril_interface->interface) != RIL_CLIENT_ERR_SUCCESS) || (_ril_close_client(ril_interface->interface) != RIL_CLIENT_ERR_SUCCESS)) { ALOGE("ril_disconnect() or ril_close_client() failed"); return; } dlclose(ril_interface->dl_handle); ril_interface->dl_handle = NULL; } if(ril_interface != NULL) free(ril_interface); if(dev == NULL) return; tinyalsa_audio_device = (struct tinyalsa_audio_device *) dev; tinyalsa_audio_device->ril_interface = NULL; }
int ril_close(struct ril_handle *ril) { LOGD("%s: ~", __func__); if (!ril || !ril->handle || !ril->client) return -1; if ((_ril_disconnect(ril->client) != RIL_CLIENT_ERR_SUCCESS) || (_ril_close_client(ril->client) != RIL_CLIENT_ERR_SUCCESS)) { LOGE("ril_disconnect() or ril_close_client() failed"); return -1; } dlclose(ril->handle); return 0; }