4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Seungbae Shin <seungbae.shin@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #include <sys/types.h>
33 #include "../include/mm_sound_private.h"
34 #include "../include/mm_sound_utils.h"
36 #define VCONF_KEY_VOLUME_PREFIX "file/private/sound/volume"
37 #define VCONF_KEY_VOLUME_TYPE_SYSTEM VCONF_KEY_VOLUME_PREFIX"/system"
38 #define VCONF_KEY_VOLUME_TYPE_NOTIFICATION VCONF_KEY_VOLUME_PREFIX"/notification"
39 #define VCONF_KEY_VOLUME_TYPE_ALARM VCONF_KEY_VOLUME_PREFIX"/alarm"
40 #define VCONF_KEY_VOLUME_TYPE_RINGTONE VCONF_KEY_VOLUME_PREFIX"/ringtone"
41 #define VCONF_KEY_VOLUME_TYPE_MEDIA VCONF_KEY_VOLUME_PREFIX"/media"
42 #define VCONF_KEY_VOLUME_TYPE_CALL VCONF_KEY_VOLUME_PREFIX"/call"
43 #define VCONF_KEY_VOLUME_TYPE_VOIP VCONF_KEY_VOLUME_PREFIX"/voip"
44 #define VCONF_KEY_VOLUME_TYPE_VOICE VCONF_KEY_VOLUME_PREFIX"/voice"
45 #define VCONF_KEY_VOLUME_TYPE_ANDROID VCONF_KEY_VOLUME_PREFIX"/fixed"
47 static char *g_volume_vconf[VOLUME_TYPE_MAX] = {
48 VCONF_KEY_VOLUME_TYPE_SYSTEM, /* VOLUME_TYPE_SYSTEM */
49 VCONF_KEY_VOLUME_TYPE_NOTIFICATION, /* VOLUME_TYPE_NOTIFICATION */
50 VCONF_KEY_VOLUME_TYPE_ALARM, /* VOLUME_TYPE_ALARM */
51 VCONF_KEY_VOLUME_TYPE_RINGTONE, /* VOLUME_TYPE_RINGTONE */
52 VCONF_KEY_VOLUME_TYPE_MEDIA, /* VOLUME_TYPE_MEDIA */
53 VCONF_KEY_VOLUME_TYPE_CALL, /* VOLUME_TYPE_CALL */
54 VCONF_KEY_VOLUME_TYPE_VOIP, /* VOLUME_TYPE_VOIP */
55 VCONF_KEY_VOLUME_TYPE_VOICE, /* VOLUME_TYPE_VOICE */
56 VCONF_KEY_VOLUME_TYPE_ANDROID /* VOLUME_TYPE_FIXED */
58 static char *g_volume_str[VOLUME_TYPE_MAX] = {
71 int mm_sound_util_volume_get_value_by_type(volume_type_t type, unsigned int *value)
73 int ret = MM_ERROR_NONE;
76 /* Get volume value from VCONF */
77 if (vconf_get_int(g_volume_vconf[type], &vconf_value)) {
78 debug_error ("vconf_get_int(%s) failed..\n", g_volume_vconf[type]);
79 return MM_ERROR_SOUND_INTERNAL;
83 if (ret == MM_ERROR_NONE)
84 debug_log("volume_get_value %s %d", g_volume_str[type], *value);
90 int mm_sound_util_volume_set_value_by_type(volume_type_t type, unsigned int value)
92 int ret = MM_ERROR_NONE;
96 debug_log("volume_set_value %s %d", g_volume_str[type], value);
98 /* Set volume value to VCONF */
99 if ((ret = vconf_set_int(g_volume_vconf[type], vconf_value)) != 0) {
101 vconf_errno = vconf_get_ext_errno();
102 debug_error ("vconf_set_int(%s) failed..ret[%d] errno[%d]\n", g_volume_vconf[type], ret, vconf_errno);
103 if (vconf_errno == VCONF_ERROR_FILE_PERM)
104 return MM_ERROR_SOUND_PERMISSION_DENIED;
106 return MM_ERROR_SOUND_INTERNAL;
112 bool mm_sound_util_is_process_alive(pid_t pid)
117 if (pid > 999999 || pid < 2)
120 if ((tmp = g_strdup_printf("/proc/%d", pid))) {
121 ret = access(tmp, F_OK);
126 if (errno == ENOENT) {
127 debug_warning ("/proc/%d not exist", pid);
130 debug_error ("/proc/%d access errno[%d]", pid, errno);
132 /* FIXME: error occured but file exists */