summaryrefslogtreecommitdiff
path: root/src/mm_radio_priv_hal.c
diff options
context:
space:
mode:
authorGilbok Lee <gilbok.lee@samsung.com>2016-11-30 20:28:17 +0900
committerGilbok Lee <gilbok.lee@samsung.com>2016-11-30 20:37:08 +0900
commitd7e2519389927a7d4611d93dfc1d7e983f9dba10 (patch)
treef951853e68ecb63d1068c127aaf58685ccc36fe9 /src/mm_radio_priv_hal.c
parent15fd9bd7e7a3457286ad5feaa95239afe9e44c1b (diff)
downloadlibmm-radio-d7e2519389927a7d4611d93dfc1d7e983f9dba10.tar.gz
libmm-radio-d7e2519389927a7d4611d93dfc1d7e983f9dba10.tar.bz2
libmm-radio-d7e2519389927a7d4611d93dfc1d7e983f9dba10.zip
[Version] 0.2.15 [Profile] Mobile, Wearable [Issue Type] Add features Change-Id: I98d0848e503e09dfe3d1a278f77456c0fc0471b6
Diffstat (limited to 'src/mm_radio_priv_hal.c')
-rw-r--r--src/mm_radio_priv_hal.c84
1 files changed, 36 insertions, 48 deletions
diff --git a/src/mm_radio_priv_hal.c b/src/mm_radio_priv_hal.c
index a349c39..8d5cd0a 100644
--- a/src/mm_radio_priv_hal.c
+++ b/src/mm_radio_priv_hal.c
@@ -135,7 +135,7 @@ static void __mmradio_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_t
#endif
static void __mmradio_volume_changed_cb(volume_type_t type, unsigned int volume, void *user_data);
-static int __mmradio_set_total_volume(mm_radio_t *radio);
+static int __mmradio_set_media_volume(mm_radio_t *radio, unsigned int level);
int _mmradio_apply_region(mm_radio_t *radio, MMRadioRegionType region, bool update)
{
@@ -548,15 +548,9 @@ int _mmradio_start(mm_radio_t *radio)
if (ret != MM_ERROR_NONE)
MMRADIO_LOG_WARNING("failed to get MEDIA_VOLUME");
- MMRADIO_VOLUME_LOCK(radio);
- radio->media_volume = volume;
- MMRADIO_VOLUME_UNLOCK(radio);
-
- ret = __mmradio_set_total_volume(radio);
- if (ret == MM_ERROR_NOT_SUPPORT_API) {
- MMRADIO_LOG_WARNING("radio_hal_set_volume is not supported");
- } else if (ret) {
- MMRADIO_LOG_ERROR("failed to radio_hal_set_volume\n");
+ ret = __mmradio_set_media_volume(radio, volume);
+ if (ret != MM_ERROR_NONE) {
+ MMRADIO_LOG_ERROR("failed to media volume");
goto error1;
}
@@ -1441,38 +1435,17 @@ static void __mmradio_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_t
}
#endif
-static int __mmradio_set_total_volume(mm_radio_t *radio)
-{
- int ret = MM_ERROR_NONE;
- float total_volume = 0.0f;
-
- MMRADIO_CHECK_INSTANCE(radio);
-
- MMRADIO_VOLUME_LOCK(radio);
- if (radio->max_media_volume != 0)
- total_volume = ((float)radio->media_volume / (float)radio->max_media_volume) * radio->local_volume;
- else
- MMRADIO_LOG_WARNING("max media voulme is zero");
-
- ret = radio_hal_set_volume(radio->hal_inf, total_volume);
- if (ret != MM_ERROR_NONE)
- MMRADIO_LOG_ERROR("radio_hal_set_volume error");
-
- MMRADIO_VOLUME_UNLOCK(radio);
- return ret;
-
-}
-
static void __mmradio_volume_changed_cb(volume_type_t type, unsigned int volume, void *user_data)
{
mm_radio_t *radio = (mm_radio_t *)user_data;
+ int ret = MM_ERROR_NONE;
MMRADIO_CHECK_INSTANCE_RETURN_VOID(radio);
if (type == VOLUME_TYPE_MEDIA) {
MMRADIO_LOG_DEBUG("Change FM Radio volume to %d", volume);
- MMRADIO_VOLUME_LOCK(radio);
- radio->media_volume = volume;
- MMRADIO_VOLUME_UNLOCK(radio);
- __mmradio_set_total_volume(radio);
+ ret = __mmradio_set_media_volume(radio, volume);
+ if (ret != MM_ERROR_NONE)
+ MMRADIO_LOG_ERROR("__mmradio_set_media_volume error");
+ return;
}
}
@@ -1534,17 +1507,18 @@ int _mmradio_set_volume(mm_radio_t *radio, float volume)
radio->local_volume = volume;
MMRADIO_VOLUME_UNLOCK(radio);
- ret = __mmradio_set_total_volume(radio);
+ ret = radio_hal_set_volume(radio->hal_inf, volume);
+ if (ret != MM_ERROR_NONE)
+ MMRADIO_LOG_ERROR("radio_hal_set_volume error");
MMRADIO_LOG_FLEAVE();
- return ret;
+ return ret;
}
int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
{
int ret = MM_ERROR_NONE;
- float total_volume = 0.0;
float volume = 0.0;
MMRADIO_LOG_FENTER();
@@ -1553,7 +1527,7 @@ int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
return_val_if_fail(pVolume, MM_ERROR_INVALID_ARGUMENT);
- ret = radio_hal_get_volume(radio->hal_inf, &total_volume);
+ ret = radio_hal_get_volume(radio->hal_inf, &volume);
if (ret != MM_ERROR_NONE) {
MMRADIO_LOG_ERROR("radio_hal_get_volume error");
*pVolume = 0;
@@ -1561,20 +1535,34 @@ int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
}
MMRADIO_VOLUME_LOCK(radio);
+ radio->local_volume = volume;
+ *pVolume = (float)radio->local_volume;
+ MMRADIO_VOLUME_UNLOCK(radio);
- if (radio->media_volume)
- volume = total_volume * ((float)radio->max_media_volume / (float)radio->media_volume);
+ MMRADIO_LOG_FLEAVE();
- MMRADIO_LOG_DEBUG("total_volume = %f, max_media_volue = %d, media_volume = %d, volume = %f",
- total_volume, radio->max_media_volume, radio->media_volume, volume);
+ return ret;
+}
- /* update volume in handle */
- if (fabs(radio->local_volume - volume) >= FLT_EPSILON)
- radio->local_volume = volume;
+static int __mmradio_set_media_volume(mm_radio_t *radio, unsigned int level)
+{
+ int ret = MM_ERROR_NONE;
- *pVolume = (float)radio->local_volume;
+ MMRADIO_LOG_FENTER();
+
+ MMRADIO_CHECK_INSTANCE(radio);
+ MMRADIO_CHECK_STATE_RETURN_IF_FAIL(radio, MMRADIO_COMMAND_SET_VOLUME);
+
+ MMRADIO_LOG_DEBUG("Setting %d volume\n", level);
+
+ MMRADIO_VOLUME_LOCK(radio);
+ radio->media_volume = level;
MMRADIO_VOLUME_UNLOCK(radio);
+ ret = radio_hal_set_media_volume(radio->hal_inf, level);
+ if (ret != MM_ERROR_NONE)
+ MMRADIO_LOG_ERROR("radio_hal_set_media_volume error");
+
MMRADIO_LOG_FLEAVE();
return ret;