Added set/unset background volume ratio fucntion.
[platform/core/uifw/tts.git] / client / tts_setting.c
index fa1b90a..50d0cdc 100644 (file)
@@ -46,6 +46,8 @@ static void* g_speed_changed_user_data;
 static tts_setting_pitch_changed_cb g_pitch_changed_cb;
 static void* g_pitch_changed_user_data;
 
+static tts_setting_background_volume_ratio_changed_cb g_bg_volume_ratio_changed_cb;
+static void* g_bg_volume_ratio_changed_user_data;
 
 
 const char* tts_tag()
@@ -104,6 +106,14 @@ void __setting_config_pitch_changed_cb(int value, void* user_data)
                g_pitch_changed_cb(value, g_pitch_changed_user_data);
 }
 
+void __setting_config_bg_volume_ratio_changed_cb(double value, void* user_data)
+{
+       SLOG(LOG_DEBUG, TAG_TTSC, "Rratio : %lf", value);
+
+       if (NULL != g_bg_volume_ratio_changed_cb)
+               g_bg_volume_ratio_changed_cb(value, g_bg_volume_ratio_changed_user_data);
+}
+
 int tts_setting_initialize()
 {
        SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Initialize TTS Setting");
@@ -120,8 +130,8 @@ int tts_setting_initialize()
                return __setting_convert_config_error_code(ret);
        }
 
-       ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb, 
-               __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, NULL);
+       ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb,
+                                                                         __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, __setting_config_bg_volume_ratio_changed_cb, NULL);
        if (0 != ret) {
                SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
                return __setting_convert_config_error_code(ret);
@@ -527,6 +537,63 @@ int tts_setting_set_pitch(int pitch)
        return __setting_convert_config_error_code(ret);
 }
 
+int tts_setting_get_background_volume_ratio(double *ratio)
+{
+       SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get background ratio");
+
+       if (TTS_SETTING_STATE_NONE == g_state) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
+               return TTS_SETTING_ERROR_INVALID_STATE;
+       }
+
+       if (NULL == ratio) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
+               return TTS_SETTING_ERROR_INVALID_PARAMETER;
+       }
+
+       double temp;
+       temp = 0;
+
+       int ret = tts_config_mgr_get_bg_volume_ratio(&temp);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
+       } else {
+               /* Copy value */
+               *ratio = temp;
+               SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get bg volume duration : %lf", *ratio);
+       }
+
+       SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
+
+       return __setting_convert_config_error_code(ret);
+}
+
+int tts_setting_set_background_volume_ratio(double ratio)
+{
+       SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set bg volume duration");
+
+       if (TTS_SETTING_STATE_NONE == g_state) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
+               return TTS_SETTING_ERROR_INVALID_STATE;
+       }
+
+       if (0.0 > ratio || ratio > 1.0) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid bg volume ratio(%lf)", ratio);
+               return TTS_SETTING_ERROR_INVALID_PARAMETER;
+       }
+
+       int ret = tts_config_mgr_set_bg_volume_ratio(ratio);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
+       } else {
+               SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set bg volume ratio : %lf", ratio);
+       }
+
+       SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
+
+       return __setting_convert_config_error_code(ret);
+}
+
 int tts_setting_get_pitch(int* pitch)
 {
        SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default pitch");
@@ -640,3 +707,25 @@ int tts_setting_unset_pitch_changed_cb()
 
        return TTS_SETTING_ERROR_NONE;
 }
+
+
+int tts_setting_set_background_volume_ratio_changed_cb(tts_setting_background_volume_ratio_changed_cb callback, void* user_data)
+{
+       if (NULL == callback) {
+               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
+               return TTS_SETTING_ERROR_INVALID_PARAMETER;
+       }
+
+       g_bg_volume_ratio_changed_cb = callback;
+       g_bg_volume_ratio_changed_user_data = user_data;
+
+       return TTS_SETTING_ERROR_NONE;
+}
+
+int tts_setting_unset_background_volume_ratio_changed_cb()
+{
+       g_bg_volume_ratio_changed_cb = NULL;
+       g_bg_volume_ratio_changed_user_data = NULL;
+
+       return TTS_SETTING_ERROR_NONE;
+}