Using radio-hal-interface in mm-hal-interface 39/187239/5 submit/tizen/20180822.040030
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 21 Aug 2018 06:51:35 +0000 (15:51 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Wed, 22 Aug 2018 02:56:58 +0000 (11:56 +0900)
[Version] 0.2.43
[Profile] Mobile, Wearable
[Issue Type] Refactoring

Change-Id: I21587a1d405436abe624c925eb0bd20fd744ee36

configure.ac
mm-radio.pc.in
packaging/libmm-radio.spec
src/Makefile.am
src/include/radio_hal_interface.h [deleted file]
src/include/tizen-radio.h [deleted file]
src/mm_radio_priv_hal.c
src/radio_hal_interface.c [deleted file]

index ccf3d348c28fa84dd12d82aa73e6c51dcc108e7b..8b9ad7c40a30b4b4a7be80996e68595da9a9cebf 100755 (executable)
@@ -46,6 +46,10 @@ PKG_CHECK_MODULES(DLOG, dlog)
 AC_SUBST(DLOG_CFLAGS)
 AC_SUBST(DLOG_LIBS)
 
+PKG_CHECK_MODULES(RADIO_HAL_INTF, radio-hal-interface)
+AC_SUBST(RADIO_HAL_INTF_CFLAGS)
+AC_SUBST(RADIO_HAL_INTF_LIBS)
+
 AC_ARG_ENABLE(emulator, AC_HELP_STRING([--enable-emulator], [using emulator interface]),
 [
  case "${enableval}" in
@@ -77,7 +81,7 @@ AC_ARG_ENABLE(sound-vstream, AC_HELP_STRING([--enable-sound-vstream], [using sou
 AM_CONDITIONAL(ENABLE_SOUND_VSTREAM, test "x$ENABLE_SOUND_VSTREAM" = "xyes")
 
 if test "x$ENABLE_SOUND_VSTREAM" == "xyes"; then
-  PKG_CHECK_MODULES(SOUDNMGR, capi-media-sound-manager)
+  PKG_CHECK_MODULES(SOUNDMGR, capi-media-sound-manager)
   AC_SUBST(SOUNDMGR_CFLAGS)
   AC_SUBST(SOUNDMGR_LIBS)
 fi
index 5b9f91ff17e515bd9387180340a85f1d5bf19287..5b0af759d5353deb278fe423557370e0aaadb864 100755 (executable)
@@ -5,7 +5,7 @@ includedir = @includedir@
 
 Name : mm-radio
 Description : Multimedia Framwork FM Radio Library
-Requires : mm-common capi-media-sound-manager
+Requires : mm-common
 Version : @VERSION@
 Libs : -L${libdir} -lmmfradio
 Cflags : -I${includedir}/mmf
index d85cf55483d3e13a00c1343db66b902707968458..cbfc733c2a52ce2b406fdacbb0cf1f25b935917b 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-radio
 Summary:    Multimedia Framework Radio Library
-Version:    0.2.42
+Version:    0.2.43
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
@@ -16,6 +16,7 @@ BuildRequires:  pkgconfig(gstreamer-1.0)
 BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
 %endif
 BuildRequires:  pkgconfig(mm-resource-manager)
+BuildRequires:  pkgconfig(radio-hal-interface)
 
 %description
 Description: Multimedia Framework Radio Library
index 9bad76c6d8534ead77013f563ffcf8f10f762d18..f257cf0e9817c981ab9303e87b33778445b5adae 100755 (executable)
@@ -26,8 +26,11 @@ libmmfradio_la_CFLAGS += $(GST_CFLAGS) \
 libmmfradio_la_LIBADD += $(GST_LIBS)  \
                         $(GSTAPP_LIBS)
 else
-libmmfradio_la_SOURCES += mm_radio_priv_hal.c \
-                         radio_hal_interface.c
+libmmfradio_la_SOURCES += mm_radio_priv_hal.c
+
+libmmfradio_la_CFLAGS += $(RADIO_HAL_INTF_CFLAGS)
+
+libmmfradio_la_LIBADD += $(RADIO_HAL_INTF_LIBS)
 endif
 
 if ENABLE_SOUND_VSTREAM
diff --git a/src/include/radio_hal_interface.h b/src/include/radio_hal_interface.h
deleted file mode 100644 (file)
index cb4a1d0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * radio_hal_interface.h
- *
- * Copyright (c) 2000 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "tizen-radio.h"
-
-typedef enum _seek_direction_type {
-       SEEK_DIRECTION_UP,      /**< Seek upward */
-       SEEK_DIRECTION_DOWN     /**< Seek downward */
-} seek_direction_type_t;
-
-typedef struct _radio_hal_interface {
-       void *dl_handle;
-       void *rh_handle;
-       radio_interface_t intf;
-} radio_hal_interface;
-
-int radio_hal_interface_init(radio_hal_interface **handle);
-int radio_hal_interface_deinit(radio_hal_interface *handle);
-int radio_hal_open(radio_hal_interface *handle);
-int radio_hal_prepare(radio_hal_interface *handle);
-int radio_hal_unprepare(radio_hal_interface *handle);
-int radio_hal_close(radio_hal_interface *handle);
-int radio_hal_start(radio_hal_interface *handle);
-int radio_hal_stop(radio_hal_interface *handle);
-int radio_hal_seek(radio_hal_interface *handle, seek_direction_type_t direction);
-int radio_hal_get_frequency(radio_hal_interface *handle, uint32_t *frequency);
-int radio_hal_set_frequency(radio_hal_interface *handle, uint32_t frequency);
-int radio_hal_get_signal_strength(radio_hal_interface *handle, int32_t *strength);
-int radio_hal_mute(radio_hal_interface *handle);
-int radio_hal_unmute(radio_hal_interface *handle);
-int radio_hal_set_volume(radio_hal_interface *handle, float volume);
-int radio_hal_get_volume(radio_hal_interface *handle, float *volume);
-int radio_hal_set_media_volume(radio_hal_interface *handle, uint32_t level);
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/src/include/tizen-radio.h b/src/include/tizen-radio.h
deleted file mode 100644 (file)
index 494df04..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * tizen-radio.h
- *
- * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef __TIZEN_RADIO_HAL_H__
-#define __TIZEN_RADIO_HAL_H__
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @file tizen-radio.h
- * @brief This file contains the Tizen radio HAL API, related structures and enumerations.
- * @since_tizen 3.0
- */
-
-/**
- * @addtogroup TIZEN_RADIO_HAL_MODULE
- * @{
- */
-
-/**
- * @brief Enumeration for the radio error.
- * @since_tizen 3.0
- */
-typedef enum radio_error {
-       RADIO_ERROR_NONE,
-       RADIO_ERROR_INVALID_PARAMETER,
-       RADIO_ERROR_INVALID_OPERATION,
-       RADIO_ERROR_PERMISSION_DENIED,
-       RADIO_ERROR_NOT_SUPPORTED,
-       RADIO_ERROR_OUT_OF_MEMORY,
-       RADIO_ERROR_DEVICE_NOT_PREPARED,
-       RADIO_ERROR_DEVICE_NOT_OPENED,
-       RADIO_ERROR_DEVICE_NOT_FOUND,
-       RADIO_ERROR_NO_ANTENNA,
-       RADIO_ERROR_INTERNAL,
-       RADIO_ERROR_NOT_IMPLEMENTED,
-       RADIO_ERROR_UNKNOWN
-} radio_error_t;
-
-/**
- * @brief Enumeration for the radio seek direction.
- * @since_tizen 3.0
- */
-typedef enum radio_seek_direction_type {
-       RADIO_SEEK_DIRECTION_UP,        /**< Seek upward */
-       RADIO_SEEK_DIRECTION_DOWN       /**< Seek downward */
-} radio_seek_direction_type_t;
-
-typedef struct radio_interface {
-       /* create & destroy */
-       radio_error_t (*init)(void **radio_hanle);
-       radio_error_t (*deinit)(void *radio_handle);
-       radio_error_t (*prepare)(void *radio_handle);
-       radio_error_t (*unprepare)(void *radio_handle);
-       radio_error_t (*open)(void *radio_handle);
-       radio_error_t (*close)(void *radio_handle);
-       radio_error_t (*start)(void *radio_handle);
-       radio_error_t (*stop)(void *radio_handle);
-       radio_error_t (*seek)(void *radio_handle, radio_seek_direction_type_t direction);
-       radio_error_t (*get_frequency)(void *radio_handle, uint32_t *frequency);
-       radio_error_t (*set_frequency)(void *radio_handle, uint32_t frequency);
-       radio_error_t (*mute)(void *radio_handle);
-       radio_error_t (*unmute)(void *radio_handle);
-       radio_error_t (*get_signal_strength)(void *radio_handle, int32_t *strength);
-       radio_error_t (*get_volume)(void *radio_handle, float *volume);
-       radio_error_t (*set_volume)(void *radio_handle, float volume);
-       radio_error_t (*set_media_volume)(void *radio_handle, uint32_t level);
-} radio_interface_t;
-
-/**
- * @brief Initializes new handle of radio HAL.
- * @since_tizen 3.0
- * @param[out] radio_handle A newly returned the radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- * @see radio_deinit()
- */
-radio_error_t radio_init(void **radio_handle);
-
-/**
- * @brief Deinitializes handle of radio HAL.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @see radio_init()
- */
-radio_error_t radio_deinit(void *radio_handle);
-
-/**
- * @brief Prepare the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- * @see radio_unprepare()
- */
-radio_error_t radio_prepare(void *radio_handle);
-
-/**
- * @brief Unprepare the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- * @see radio_prepare()
- */
-radio_error_t radio_unprepare(void *radio_handle);
-
-/**
- * @brief Opens the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_DEVICE_NOT_FOUND Failed to find radio device
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- * @retval #RADIO_ERROR_PERMISSION_DENIED The access to the resources can not be granted.
- * @retval #RADIO_ERROR_DEVICE_NOT_PREPARED Not prepared the radio device
- * @see radio_close()
- */
-radio_error_t radio_open(void *radio_handle);
-
-/**
- * @brief Closes the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_DEVICE_NOT_OPENED The radio device is not opened.
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- * @see radio_open()
- */
-radio_error_t radio_close(void *radio_handle);
-
-/**
- * @brief Starts the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_DEVICE_NOT_OPENED The radio device is not opened.
- * @see radio_stop()
- */
-radio_error_t radio_start(void *radio_handle);
-
-/**
- * @brief Stops the device of radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_DEVICE_NOT_OPENED The radio device is not opened.
- * @see radio_start()
- */
-radio_error_t radio_stop(void *radio_handle);
-
-/**
- * @brief Seeks (up or down) the effective frequency of the radio.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[in] direction The seek direction type (up or down)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_DEVICE_NOT_OPENED The radio device is not opened
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_seek(void *radio_handle, radio_seek_direction_type_t direction);
-
-/**
- * @brief Gets the radio frequency.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[out] frequency The current frequency (khz)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_get_frequency(void *radio_handle, uint32_t *frequency);
-
-/**
- * @brief Sets the radio frequency.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[in] frequency The frequency to set (khz)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_set_frequency(void *radio_handle, uint32_t frequency);
-
-/**
- * @brief Sets the radio's mute
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_mute(void *radio_handle);
-
-/**
- * @brief Unsets the radio's mute
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_unmute(void *radio_handle);
-
-/**
- * @brief Gets the current signal strength of the radio
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[out] strength The current signal strength (dBm)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_get_signal_strength(void *radio_handle, int32_t *strength);
-
-/**
- * @brief Gets the radio's current volume.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[out] volume The current radio volume (0.0 ~ 1.0)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_get_volume(void *radio_handle, float *volume);
-
-/**
- * @brief Sets the current radio's volume.
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[in] volume The radio volume to set (0.0 ~ 1.0)
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_set_volume(void *radio_handle, float volume);
-
-/**
- * @brief Sets the current media volume level(system media volume).
- * @since_tizen 3.0
- * @param[in] radio_handle The radio HAL handle
- * @param[in] level The media volume level to set
- * @return @c 0 on success, otherwise a negative error value
- * @retval #RADIO_ERROR_NONE Successful
- * @retval #RADIO_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #RADIO_ERROR_INVALID_OPERATION Invalid operation
- */
-radio_error_t radio_set_media_volume(void *radio_handle, uint32_t level);
-
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_RADIO_HAL_H__ */
-
index b11bc629dd6329c63bb34aaf348ee9f627efd86f..739e245dce8428b33e3b1f67d6fac8828fe2125f 100644 (file)
@@ -751,6 +751,7 @@ int _mmradio_stop(mm_radio_t *radio)
                        if (ret != MM_RESOURCE_MANAGER_ERROR_NONE)
                                MMRADIO_LOG_ERROR("resource manager commit fail");
                }
+
                radio->is_ready = false;
        }
 
@@ -934,6 +935,7 @@ void __mmradio_scan_thread(mm_radio_t *radio)
 {
        int ret = MM_ERROR_NONE;
        int prev_freq = 0;
+
        MMRadioThread_t *p_thread = NULL;
 
        MMRADIO_LOG_FENTER();
diff --git a/src/radio_hal_interface.c b/src/radio_hal_interface.c
deleted file mode 100644 (file)
index b4f683b..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * radio_hal_interface.c
- *
- * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#include <dlfcn.h>
-#include <dlog.h>
-
-#include "radio_hal_interface.h"
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif /* LOG_TAG */
-
-#define LOG_TAG "RADIO_HAL_INTF"
-
-#define LIB_TIZEN_RADIO PATH_LIBDIR"/libtizen-radio.so"
-
-#define RADIO_INTF_CHECK_ARG(x_radio)                                  \
-do {                                                                                           \
-       if (!x_radio) {                                                                 \
-               LOGE("argument is NULL\n");                     \
-               return RADIO_ERROR_INVALID_PARAMETER;   \
-       }                                                                                               \
-} while (0)
-
-int radio_hal_interface_init(radio_hal_interface **handle)
-{
-       radio_hal_interface *h = NULL;
-       int ret = RADIO_ERROR_NONE;
-       h = (radio_hal_interface *)malloc(sizeof(radio_hal_interface));
-
-       if (!h) {
-               LOGE("cannot allocate memory for radio_hal interface");
-               return RADIO_ERROR_OUT_OF_MEMORY;
-       }
-
-       h->dl_handle = dlopen(LIB_TIZEN_RADIO, RTLD_NOW);
-
-       if (h->dl_handle) {
-               h->intf.init = dlsym(h->dl_handle, "radio_init");
-               h->intf.deinit = dlsym(h->dl_handle, "radio_deinit");
-               h->intf.prepare = dlsym(h->dl_handle, "radio_prepare");
-               h->intf.unprepare = dlsym(h->dl_handle, "radio_unprepare");
-               h->intf.open = dlsym(h->dl_handle, "radio_open");
-               h->intf.close = dlsym(h->dl_handle, "radio_close");
-               h->intf.start = dlsym(h->dl_handle, "radio_start");
-               h->intf.stop = dlsym(h->dl_handle, "radio_stop");
-               h->intf.seek = dlsym(h->dl_handle, "radio_seek");
-               h->intf.get_frequency = dlsym(h->dl_handle, "radio_get_frequency");
-               h->intf.set_frequency = dlsym(h->dl_handle, "radio_set_frequency");
-               h->intf.mute = dlsym(h->dl_handle, "radio_mute");
-               h->intf.unmute = dlsym(h->dl_handle, "radio_unmute");
-               h->intf.get_signal_strength = dlsym(h->dl_handle, "radio_get_signal_strength");
-               h->intf.get_volume = dlsym(h->dl_handle, "radio_get_volume");
-               h->intf.set_volume = dlsym(h->dl_handle, "radio_set_volume");
-               h->intf.set_media_volume = dlsym(h->dl_handle, "radio_set_media_volume");
-
-               if (h->intf.init == NULL || h->intf.deinit == NULL) {
-                       LOGE("could not get mandatory funtion");
-                       goto FAIL;
-               }
-
-               ret = h->intf.init(&h->rh_handle);
-               if (ret != RADIO_ERROR_NONE) {
-                       LOGE("radio_hal init failed %d", ret);
-                       goto FAIL;
-               }
-
-       } else {
-               LOGE("open radio hal_interface failed : %s", dlerror());
-               ret = RADIO_ERROR_INTERNAL;
-               goto FAIL;
-       }
-
-       *handle = h;
-
-       LOGD("open radio_hal interface");
-
-       return ret;
-FAIL:
-       if (h) {
-               if (h->dl_handle)
-                       dlclose(h->dl_handle);
-               free(h);
-       }
-
-       return ret;
-}
-
-int radio_hal_interface_deinit(radio_hal_interface *handle)
-{
-       int ret = RADIO_ERROR_NONE;
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (handle->dl_handle) {
-               ret = handle->intf.deinit(handle->rh_handle);
-               if (ret != RADIO_ERROR_NONE)
-                       return ret;
-
-               handle->rh_handle = NULL;
-
-               LOGD("close radio_hal interface");
-               dlclose(handle->dl_handle);
-               handle->dl_handle = NULL;
-       }
-
-       free(handle);
-       handle = NULL;
-
-       return ret;
-}
-
-int radio_hal_open(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.open) {
-               LOGW("radio_hal open is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.open(handle->rh_handle);
-}
-
-int radio_hal_prepare(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.prepare) {
-               LOGW("radio_hal prepare is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.prepare(handle->rh_handle);
-}
-
-int radio_hal_unprepare(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.unprepare) {
-               LOGW("radio_hal unprepare is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.unprepare(handle->rh_handle);
-}
-
-
-int radio_hal_close(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.close) {
-               LOGW("radio_hal close is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.close(handle->rh_handle);
-}
-
-int radio_hal_start(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.start) {
-               LOGW("radio_hal start is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.start(handle->rh_handle);
-}
-
-int radio_hal_stop(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.stop) {
-               LOGW("radio_hal stop is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.stop(handle->rh_handle);
-}
-
-
-int radio_hal_seek(radio_hal_interface *handle, seek_direction_type_t direction)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.seek) {
-               LOGW("radio_hal seek is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.seek(handle->rh_handle, (radio_seek_direction_type_t)direction);
-}
-
-int radio_hal_get_frequency(radio_hal_interface *handle, uint32_t *frequency)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.get_frequency) {
-               LOGW("radio_hal get_frequency is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.get_frequency(handle->rh_handle, frequency);
-}
-
-int radio_hal_set_frequency(radio_hal_interface *handle, uint32_t frequency)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.set_frequency) {
-               LOGW("radio_hal set_frequency is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.set_frequency(handle->rh_handle, frequency);
-}
-
-int radio_hal_get_signal_strength(radio_hal_interface *handle, int32_t *strength)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.get_signal_strength) {
-               LOGW("radio_hal get_signal_strength is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.get_signal_strength(handle->rh_handle, strength);
-}
-
-int radio_hal_mute(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.mute) {
-               LOGW("radio_hal mute is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.mute(handle->rh_handle);
-}
-
-int radio_hal_unmute(radio_hal_interface *handle)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.unmute) {
-               LOGW("radio_hal unmute is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.unmute(handle->rh_handle);
-}
-
-int radio_hal_set_volume(radio_hal_interface *handle, float volume)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.set_volume) {
-               LOGW("radio_hal set_volume is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.set_volume(handle->rh_handle, volume);
-}
-
-int radio_hal_get_volume(radio_hal_interface *handle, float *volume)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.get_volume) {
-               LOGW("radio_hal get_volume is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.get_volume(handle->rh_handle, volume);
-}
-
-int radio_hal_set_media_volume(radio_hal_interface *handle, uint32_t level)
-{
-       RADIO_INTF_CHECK_ARG(handle);
-
-       if (!handle->intf.set_media_volume) {
-               LOGW("radio_hal set_media_volume is NULL");
-               return RADIO_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return handle->intf.set_media_volume(handle->rh_handle, level);
-}
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-