2 * Copyright 2013 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (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://floralicense.org/license/
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.
22 #include <sys/types.h>
38 #include "critical_log.h"
40 #if defined(HAVE_LIVEBOX)
41 #include <livebox-service.h>
42 #include "client_life.h"
43 #include "slave_life.h"
48 #define xmonitor_handle_state_changes()
59 static void lcd_state_cb(keynode_t *node, void *user_data)
65 xmonitor_handle_state_changes();
68 HAPI int setting_is_lcd_off(void)
72 if (vconf_get_int(VCONFKEY_PM_STATE, &state) != 0) {
73 ErrPrint("Idle lock state is not valid\n");
74 state = VCONFKEY_PM_STATE_NORMAL; /* UNLOCK */
77 DbgPrint("State: %d, (%d:lcdoff, %d:sleep)\n", state, VCONFKEY_PM_STATE_LCDOFF, VCONFKEY_PM_STATE_SLEEP);
78 return state == VCONFKEY_PM_STATE_LCDOFF || state == VCONFKEY_PM_STATE_SLEEP;
81 static void power_off_cb(keynode_t *node, void *user_data)
84 CRITICAL_LOG("Terminated(vconf)\n");
86 if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) != 0) {
87 ErrPrint("Failed to get power off status (%d)\n", val);
91 if (val == VCONFKEY_SYSMAN_POWER_OFF_DIRECT || val == VCONFKEY_SYSMAN_POWER_OFF_RESTART) {
92 DbgPrint("Power off requested: Ignored\n");
94 ErrPrint("Unknown power state: %d\n", val);
98 static void region_changed_cb(keynode_t *node, void *user_data)
103 region = vconf_get_str(VCONFKEY_REGIONFORMAT);
108 setenv("LC_CTYPE", region, 1);
109 setenv("LC_NUMERIC", region, 1);
110 setenv("LC_TIME", region, 1);
111 setenv("LC_COLLATE", region, 1);
112 setenv("LC_MONETARY", region, 1);
113 setenv("LC_PAPER", region, 1);
114 setenv("LC_NAME", region, 1);
115 setenv("LC_ADDRESS", region, 1);
116 setenv("LC_TELEPHONE", region, 1);
117 setenv("LC_MEASUREMENT", region, 1);
118 setenv("LC_IDENTIFICATION", region, 1);
120 r = setlocale(LC_ALL, "");
122 ErrPrint("Failed to change region\n");
128 static void lang_changed_cb(keynode_t *node, void *user_data)
133 lang = vconf_get_str(VCONFKEY_LANGSET);
138 setenv("LANG", lang, 1);
139 setenv("LC_MESSAGES", lang, 1);
141 r = setlocale(LC_ALL, "");
143 ErrPrint("Failed to change locale\n");
146 DbgPrint("Locale: %s\n", setlocale(LC_ALL, NULL));
150 static void low_mem_cb(keynode_t *node, void *user_data)
154 val = vconf_keynode_get_int(node);
156 if (val >= VCONFKEY_SYSMAN_LOW_MEMORY_SOFT_WARNING) {
157 CRITICAL_LOG("Low memory: level %d\n", val);
158 if (s_info.deactivated == 0) {
159 s_info.deactivated = 1;
160 //slave_deactivate_all(0, 1, 0);
162 ErrPrint("Fall into the low mem status\n");
165 CRITICAL_LOG("Normal memory: level %d\n", val);
166 if (s_info.deactivated == 1) {
167 s_info.deactivated = 0;
168 //slave_activate_all();
169 ErrPrint("Recover from the low mem status\n");
174 HAPI int setting_init(void)
178 ret = vconf_notify_key_changed(VCONFKEY_PM_STATE, lcd_state_cb, NULL);
180 ErrPrint("Failed to add vconf for lock state: %d\n", ret);
183 ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, power_off_cb, NULL);
185 ErrPrint("Failed to add vconf for power state: %d \n", ret);
188 ret = vconf_notify_key_changed(VCONFKEY_LANGSET, lang_changed_cb, NULL);
190 ErrPrint("Failed to add vconf for lang change: %d\n", ret);
193 ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT, region_changed_cb, NULL);
195 ErrPrint("Failed to add vconf for region change: %d\n", ret);
198 ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY, low_mem_cb, NULL);
200 ErrPrint("Failed to add vconf for low mem monitor: %d\n", ret);
203 lang_changed_cb(NULL, NULL);
204 region_changed_cb(NULL, NULL);
208 HAPI int setting_fini(void)
212 ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY, low_mem_cb);
214 ErrPrint("Failed to ignore vconf key (%d)\n", ret);
217 ret = vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT, region_changed_cb);
219 ErrPrint("Failed to ignore vconf key (%d)\n", ret);
222 ret = vconf_ignore_key_changed(VCONFKEY_LANGSET, lang_changed_cb);
224 ErrPrint("Failed to ignore vconf key (%d)\n", ret);
227 ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE, lcd_state_cb);
229 ErrPrint("Failed to ignore vconf key (%d)\n", ret);
232 ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, power_off_cb);
234 ErrPrint("Failed to ignore vconf key (%d)\n", ret);