2 * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <iniparser.h>
20 #include "common/mm_resource_manager_utils.h"
21 #include "daemon/mm_resource_manager_daemon_conf.h"
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 #define MM_RESOURCE_MANAGER_INI_MAX_INSTANCE "max instance:"
32 static mm_resource_manager_conf_s mm_resource_manager_conf = {
33 {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1] =
34 MM_RESOURCE_MANAGER_NO_RES},
35 {[0 ... MM_RESOURCE_MANAGER_APP_CLASS_MAX - 1] =
36 MM_RESOURCE_MANAGER_NO_APP_CLASS},
37 {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1]
38 [0 ... MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX - 1] =
39 MM_RESOURCE_MANAGER_NO_RES},
40 {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1] =
41 MM_RESOURCE_MANAGER_NO_RES}
46 gboolean mm_resource_manager_reload_conf(void)
52 ini = iniparser_load(MM_RESOURCE_MANAGER_INI_FILE);
53 MM_RM_RETVM_IF(ini == NULL, FALSE,
54 "Daemon cannot load conf file '%s'", MM_RESOURCE_MANAGER_INI_FILE);
56 param_name = g_string_sized_new(64);
58 for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
59 mm_resource_manager_conf.max_volume[i] = iniparser_getint(ini,
60 g_string_append(g_string_assign(param_name,
61 MM_RESOURCE_MANAGER_INI_MAX_VOLUME),
62 _mm_resource_manager_get_res_str(i))->str,
63 MM_RESOURCE_MANAGER_NO_RES);
64 if (mm_resource_manager_conf.max_volume[i] >= 1) {
65 if (mm_resource_manager_conf.max_volume[i] > 1)
66 mm_resource_manager_conf.volume_would_be_checked[i] = TRUE;
67 for (j = 0; j < MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX; j++) {
68 g_string_printf(param_name, "%s:%s",
69 _mm_resource_manager_get_res_str(i),
70 _mm_resource_manager_get_condition_str(j));
71 mm_resource_manager_conf.condition_volume[i][j] =
72 iniparser_getint(ini, param_name->str,
73 MM_RESOURCE_MANAGER_NO_RES);
78 for (i = 0; i < MM_RESOURCE_MANAGER_APP_CLASS_MAX; i++) {
79 mm_resource_manager_conf.priority[i] = iniparser_getint(ini,
80 g_string_append(g_string_assign(param_name,
81 MM_RESOURCE_MANAGER_INI_PRIORITY),
82 _mm_resource_manager_get_app_class_str(i))->str,
83 MM_RESOURCE_MANAGER_NO_APP_CLASS);
86 for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
87 mm_resource_manager_conf.max_instance[i] = iniparser_getint(ini,
88 g_string_append(g_string_assign(param_name,
89 MM_RESOURCE_MANAGER_INI_MAX_INSTANCE),
90 _mm_resource_manager_get_res_str(i))->str,
91 MM_RESOURCE_MANAGER_NO_RES);
94 g_string_free(param_name, TRUE);
95 iniparser_freedict(ini);
100 mm_resource_manager_conf_s* mm_resource_manager_get_conf(void)
102 return &mm_resource_manager_conf;