7f7efc1cb0667446b87a5f70f04978716af6e4c9
[platform/core/multimedia/mm-resource-manager.git] / src / daemon / mm_resource_manager_daemon_conf.c
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <glib.h>
18 #include <iniparser.h>
19
20 #include "common/mm_resource_manager_utils.h"
21 #include "daemon/mm_resource_manager_daemon_conf.h"
22
23
24
25 #define MM_RESOURCE_MANAGER_INI_FILE "/etc/multimedia/mmfw_resource_manager.ini"
26 #define MM_RESOURCE_MANAGER_INI_MAX_VOLUME "max volume:"
27 #define MM_RESOURCE_MANAGER_INI_PRIORITY "priority:"
28
29
30
31 static mm_resource_manager_conf_s mm_resource_manager_conf = {
32         {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1] =
33                 MM_RESOURCE_MANAGER_NO_RES},
34         {[0 ... MM_RESOURCE_MANAGER_APP_CLASS_MAX - 1] =
35                 MM_RESOURCE_MANAGER_NO_APP_CLASS},
36         {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1]
37          [0 ... MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX - 1] =
38                 MM_RESOURCE_MANAGER_NO_RES}
39 };
40
41
42
43 gboolean mm_resource_manager_reload_conf()
44 {
45         dictionary *ini;
46         GString *param_name;
47         int i, j;
48
49         ini = iniparser_load(MM_RESOURCE_MANAGER_INI_FILE);
50         if (ini) {
51                 param_name = g_string_sized_new(64);
52
53                 for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
54                         mm_resource_manager_conf.max_volume[i] = iniparser_getint(ini,
55                                         g_string_append(g_string_assign(param_name,
56                                         MM_RESOURCE_MANAGER_INI_MAX_VOLUME),
57                                         _mm_resource_manager_get_res_str(i))->str,
58                                         MM_RESOURCE_MANAGER_NO_RES);
59                         if (mm_resource_manager_conf.max_volume[i] >= 1) {
60                                 for (j = 0; j < MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX; j++) {
61                                         g_string_printf(param_name, "%s:%s",
62                                                         _mm_resource_manager_get_res_str(i),
63                                                         _mm_resource_manager_get_condition_str(j));
64                                         mm_resource_manager_conf.condition_volume[i][j] =
65                                                         iniparser_getint(ini, param_name->str,
66                                                         MM_RESOURCE_MANAGER_NO_RES);
67                                 }
68                         }
69                 }
70
71                 for (i = 0; i < MM_RESOURCE_MANAGER_APP_CLASS_MAX; i++) {
72                         mm_resource_manager_conf.priority[i] = iniparser_getint(ini,
73                                         g_string_append(g_string_assign(param_name,
74                                         MM_RESOURCE_MANAGER_INI_PRIORITY),
75                                         _mm_resource_manager_get_app_class_str(i))->str,
76                                         MM_RESOURCE_MANAGER_NO_APP_CLASS);
77                 }
78
79                 g_string_free(param_name, TRUE);
80                 iniparser_freedict(ini);
81
82                 return TRUE;
83         } else {
84                 MM_RM_ERROR("Daemon cannot load conf file '%s'",
85                                 MM_RESOURCE_MANAGER_INI_FILE);
86                 return FALSE;
87         }
88 }
89
90 mm_resource_manager_conf_s* mm_resource_manager_get_conf()
91 {
92         return &mm_resource_manager_conf;
93 }