Remove sound_server in build packages
[platform/core/multimedia/libmm-sound.git] / mm_sound.c
index e4e3ff8..1d9f443 100644 (file)
 #include "include/mm_sound_pa_client.h"
 #include "include/mm_sound_common.h"
 
-
-#define VOLUME_MAX_MULTIMEDIA  16
-#define VOLUME_MAX_BASIC               8
-#define VOLUME_MAX_SINGLE              1
-
-
 #define MASTER_VOLUME_MAX 100
 #define MASTER_VOLUME_MIN 0
 
@@ -57,43 +51,16 @@ static const char* _get_volume_str(volume_type_t type)
                "SYSTEM", "NOTIFICATION", "ALARM", "RINGTONE", "MEDIA", "CALL", "VOIP", "VOICE", "FIXED"
        };
 
-       return (type >= VOLUME_TYPE_SYSTEM && type < VOLUME_TYPE_MAX) ? volume_type_str[type] : "Unknown";
+       return (type < VOLUME_TYPE_MAX) ? volume_type_str[type] : "Unknown";
 }
 
-static int _validate_volume(volume_type_t type, int value)
+static const char* _get_volume_str_internal(volume_type_internal_t type)
 {
-       if (value < 0)
-               return -1;
-
-       switch (type) {
-       case VOLUME_TYPE_CALL:
-       case VOLUME_TYPE_VOIP:
-               if (value >= VOLUME_MAX_BASIC) {
-                       return -1;
-               }
-               break;
-       case VOLUME_TYPE_SYSTEM:
-       case VOLUME_TYPE_MEDIA:
-       case VOLUME_TYPE_ALARM:
-       case VOLUME_TYPE_NOTIFICATION:
-       case VOLUME_TYPE_RINGTONE:
-       case VOLUME_TYPE_VOICE:
-               if (value >= VOLUME_MAX_MULTIMEDIA) {
-                       return -1;
-               }
-               break;
-       default:
-               return -1;
-               break;
-       }
-       return 0;
-}
+       static const char *volume_type_str[] = {
+               "BIXBY"
+       };
 
-EXPORT_API
-int mm_sound_volume_remove_callback(volume_type_t type)
-{
-       /* FIXME : Will be removed */
-       return MM_ERROR_NOT_SUPPORT_API;
+       return (type < (VOLUME_TYPE_BIXBY + 1)) ? volume_type_str[type] : "Unknown";
 }
 
 EXPORT_API
@@ -128,22 +95,16 @@ int mm_sound_remove_volume_changed_callback(unsigned int subs_id)
 }
 
 EXPORT_API
-int mm_sound_volume_set_value(volume_type_t volume_type, const unsigned int volume_level)
+int mm_sound_volume_set_value(volume_type_t type, const unsigned int value)
 {
        int ret = MM_ERROR_NONE;
 
-       debug_msg("type = (%d)%s, value = %d", volume_type, _get_volume_str(volume_type), volume_level);
-
-       /* Check input param */
-       if (0 > _validate_volume(volume_type, (int)volume_level)) {
-               debug_error("invalid volume type %d, value %u", volume_type, volume_level);
-               return MM_ERROR_INVALID_ARGUMENT;
-       }
-
        /* request daemon to set volume */
-       ret = mm_sound_client_set_volume_by_type(volume_type, volume_level);
-       if (MM_ERROR_NONE != ret)
-               debug_error("Can not set volume, ret=0x%x", ret);
+       ret = mm_sound_client_set_volume_by_type(type, value);
+       if (ret)
+               debug_error("can not set volume, type(%s), value(%d), ret=0x%x", _get_volume_str(type), value, ret);
+       else
+               debug_msg("set (%s) volume to (%d)",  _get_volume_str(type), value);
 
        return ret;
 }
@@ -153,64 +114,108 @@ int mm_sound_volume_get_value(volume_type_t type, unsigned int *value)
 {
        int ret = MM_ERROR_NONE;
 
-       /* Check input param */
-       if (value == NULL) {
-               debug_error("invalid argument");
-               return MM_ERROR_INVALID_ARGUMENT;
-       }
-       if (type < 0 || type >= VOLUME_TYPE_MAX) {
-               debug_error("invalid volume type value %d", type);
+       ret = mm_sound_client_get_volume_by_type(type, value);
+       if (ret)
+               debug_error("can not get volume, type(%s), ret=0x%x", _get_volume_str(type), ret);
+       else
+               debug_msg("(%s) volume : %d",  _get_volume_str(type), *value);
+
+       return ret;
+}
+
+EXPORT_API
+int mm_sound_add_volume_changed_callback_internal(mm_sound_volume_changed_cb_internal func, void* user_data, unsigned int *subs_id)
+{
+       int ret = MM_ERROR_NONE;
+
+       if (func == NULL || subs_id == NULL) {
+               debug_error("argument is not valid");
                return MM_ERROR_INVALID_ARGUMENT;
        }
 
-       ret = mm_sound_util_volume_get_value_by_type(type, value);
+       ret = mm_sound_client_add_volume_changed_callback_internal(func, user_data, subs_id);
+       if (ret < 0)
+               debug_error("Can not add internal volume changed callback, ret = %x", ret);
 
-       debug_msg("returned %s = %d", _get_volume_str(type), *value);
        return ret;
 }
 
 EXPORT_API
-int mm_sound_volume_primary_type_set(volume_type_t type)
+int mm_sound_remove_volume_changed_callback_internal(unsigned int subs_id)
 {
        int ret = MM_ERROR_NONE;
 
-       /* Check input param */
-       if (type < VOLUME_TYPE_UNKNOWN || type >= VOLUME_TYPE_MAX) {
-               debug_error("invalid argument");
-               return MM_ERROR_INVALID_ARGUMENT;
-       }
+       ret = mm_sound_client_remove_volume_changed_callback(subs_id);
+       if (ret < 0)
+               debug_error("Can not remove internal volume changed callback, ret = %x", ret);
 
-       if (vconf_set_int(VCONFKEY_SOUND_PRIMARY_VOLUME_TYPE, type)) {
-               debug_error("could not set vconf for RIMARY_VOLUME_TYPE");
-               ret = MM_ERROR_SOUND_INTERNAL;
-       } else {
-               debug_msg("set primary volume type forcibly %d(%s)", type, _get_volume_str(type));
-       }
+       return ret;
+}
+
+EXPORT_API
+int mm_sound_volume_set_value_internal(volume_type_internal_t type, const unsigned int value)
+{
+       int ret = MM_ERROR_NONE;
+
+       /* request daemon to set volume */
+       ret = mm_sound_client_set_volume_by_internal_type(type, value);
+       if (ret)
+               debug_error("can not set internal volume, type(%s), value(%d), ret=0x%x", _get_volume_str_internal(type), value, ret);
+       else
+               debug_msg("set (%s) volume to (%d)",  _get_volume_str_internal(type), value);
+
+       return ret;
+}
+
+EXPORT_API
+int mm_sound_volume_get_value_internal(volume_type_internal_t type, unsigned int *value)
+{
+       int ret = MM_ERROR_NONE;
+
+       ret = mm_sound_client_get_volume_by_internal_type(type, value);
+       if (ret)
+               debug_error("can not get internal volume, type(%s), ret=0x%x", _get_volume_str_internal(type), ret);
+       else
+               debug_msg("(%s) volume : %d",  _get_volume_str_internal(type), *value);
+
+       return ret;
+}
+
+EXPORT_API
+int mm_sound_set_mute(volume_type_t type, bool mute)
+{
+       int ret = MM_ERROR_NONE;
+
+       ret = mm_sound_client_set_mute_by_type(type, mute);
+       if (ret)
+               debug_error("can not set mute, type(%s), mute(%d), ret=0x%x", _get_volume_str(type), mute, ret);
+       else
+               debug_msg("set (%s) mute to (%d)",  _get_volume_str(type), mute);
 
        return ret;
 }
 
 EXPORT_API
-int mm_sound_volume_primary_type_get(volume_type_t *type)
+int mm_sound_get_mute(volume_type_t type, bool  *muted)
 {
        int ret = MM_ERROR_NONE;
-       int voltype = VOLUME_TYPE_RINGTONE;
 
        /* Check input param */
-       if (type == NULL) {
+       if (!muted) {
                debug_error("invalid argument");
                return MM_ERROR_INVALID_ARGUMENT;
        }
-
-       /* check force set */
-       if (vconf_get_int(VCONFKEY_SOUND_PRIMARY_VOLUME_TYPE, &voltype)) {
-               debug_error("could not get vconf for PRIMARY_VOLUME_TYPE");
-               ret = MM_ERROR_SOUND_INTERNAL;
-       } else {
-               debug_msg("get primary volume type %d(%s)", voltype, _get_volume_str(voltype));
-               *type = voltype;
+       if (type > VOLUME_TYPE_VOICE) {
+               debug_error("invalid volume type value %d", type);
+               return MM_ERROR_INVALID_ARGUMENT;
        }
 
+       ret = mm_sound_client_get_mute_by_type(type, muted);
+       if (ret)
+               debug_error("can not get mute, type(%s), ret=0x%x", _get_volume_str(type), ret);
+       else
+               debug_msg("(%s) mute state : %d",  _get_volume_str(type), *muted);
+
        return ret;
 }
 
@@ -261,74 +266,6 @@ int mm_sound_control_filter(const char *stream_type, const char *filter_name, co
 }
 
 ///////////////////////////////////
-////     MMSOUND PLAY APIs
-///////////////////////////////////
-EXPORT_API
-int mm_sound_play_sound_with_stream_info(const char *filename, char *stream_type, int stream_id, unsigned int loop, mm_sound_stop_callback_func callback, void *data, int *handle)
-{
-       MMSoundPlayParam param = { 0, };
-       int err;
-
-       param.filename = filename;
-       param.volume = 0; //volume value dose not effect anymore
-       param.callback = callback;
-       param.data = data;
-
-       if (loop == 0)
-               param.loop = -1;
-       else
-               param.loop = loop;
-
-       err = mm_sound_client_play_sound_with_stream_info(&param, handle, stream_type, stream_id);
-       if (err < 0) {
-               debug_error("Failed to play sound");
-               return err;
-       }
-
-       debug_warning("success : handle=[%p]", handle);
-
-       return MM_ERROR_NONE;
-
-}
-
-
-EXPORT_API
-int mm_sound_stop_sound(int handle)
-{
-       int err;
-
-       debug_warning("enter : handle=[%d]", handle);
-       /* Stop sound */
-       err = mm_sound_client_stop_sound(handle);
-       if (err < 0) {
-               debug_error("Fail to stop sound");
-               return err;
-       }
-       debug_warning("success : handle=[%d]", handle);
-
-       return MM_ERROR_NONE;
-}
-
-///////////////////////////////////
-////     MMSOUND TONE APIs
-///////////////////////////////////
-EXPORT_API
-int mm_sound_play_tone_with_stream_info(MMSoundTone_t tone, char *stream_type, int stream_id, const double volume, const int duration, int *handle)
-{
-
-       int err = MM_ERROR_NONE;
-
-       err = mm_sound_client_play_tone_with_stream_info(tone, stream_type, stream_id, volume, duration, handle);
-       if (err < 0) {
-               debug_error("Failed to play sound");
-               return err;
-       }
-
-       return err;
-
-}
-
-///////////////////////////////////
 ////     MMSOUND ROUTING APIs
 ///////////////////////////////////
 
@@ -386,11 +323,41 @@ int mm_sound_remove_test_callback(unsigned int subs_id)
        return ret;
 }
 
+EXPORT_API
+int mm_sound_add_ducking_state_changed_callback(mm_sound_ducking_state_changed_cb func, void *user_data, unsigned int *subs_id)
+{
+       int ret = MM_ERROR_NONE;
+
+       if (func == NULL || subs_id == NULL) {
+               debug_error("argument is not valid");
+               return MM_ERROR_INVALID_ARGUMENT;
+       }
+
+       ret = mm_sound_client_add_ducking_state_changed_callback(func, user_data, subs_id);
+       if (ret < 0) {
+               debug_error("Can not add ducking state changed callback, ret = %x", ret);
+       }
+
+       return ret;
+}
+
+EXPORT_API
+int mm_sound_remove_ducking_state_changed_callback(unsigned int subs_id)
+{
+       int ret = MM_ERROR_NONE;
+
+       ret = mm_sound_client_remove_ducking_state_changed_callback(subs_id);
+       if (ret < 0) {
+               debug_error("Can not remove ducking state changed callback, ret = %x", ret);
+       }
+
+       return ret;
+}
+
 #ifdef TIZEN_TV
 EXPORT_API
 void mm_sound_dotnet_cleanup(int signo)
 {
-       mm_sound_client_cleanup();
 }
 #endif