2 * Copyright (c) 2020 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.
16 #include "sst_interface.h"
22 #include "sst_vconf.h"
23 #include "sst_sound.h"
24 #include "sst_screen.h"
25 #include "sst_feature.h"
26 #include "sst_time_N_locale.h"
28 static sst_interface sst_iface_table[] = {
29 [SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE] = {
30 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
31 VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
32 SYSTEM_SETTING_DATA_TYPE_STRING,
33 .feature_checker = sst_feature_check_incoming_call,
34 .getter.s = sst_sound_get_call_ringtone,
35 .setter.s = sst_sound_set_call_ringtone
37 [SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN] = {
38 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
40 SYSTEM_SETTING_DATA_TYPE_STRING,
41 .feature_checker = sst_feature_check_home_screen,
42 .getter.s = sst_vconf_get_str,
43 .setter.s = sst_screen_set_home_wallpaper
45 [SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN] = {
46 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
47 VCONFKEY_IDLE_LOCK_BGSET,
48 SYSTEM_SETTING_DATA_TYPE_STRING,
49 .feature_checker = sst_feature_check_lock_screen,
50 .getter.s = sst_vconf_get_str,
51 .setter.s = sst_screen_set_lock_wallpaper
53 [SYSTEM_SETTINGS_KEY_FONT_SIZE] = {
54 SYSTEM_SETTINGS_KEY_FONT_SIZE,
55 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE,
56 SYSTEM_SETTING_DATA_TYPE_INT,
57 .feature_checker = sst_feature_check_font,
58 .getter.i = sst_vconf_get_int,
59 .setter.i = sst_font_set_size
61 [SYSTEM_SETTINGS_KEY_FONT_TYPE] = {
62 SYSTEM_SETTINGS_KEY_FONT_TYPE,
63 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME,
64 SYSTEM_SETTING_DATA_TYPE_STRING,
65 .feature_checker = sst_feature_check_font,
66 .getter.s = sst_font_get_type,
67 .setter.s = sst_font_set_type
69 [SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION] = {
70 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
71 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
72 SYSTEM_SETTING_DATA_TYPE_BOOL,
73 .feature_checker = NULL,
74 .getter.b = sst_vconf_get_bool,
75 .setter.b = sst_vconf_set_bool
77 [SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE] = {
78 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
79 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
80 SYSTEM_SETTING_DATA_TYPE_STRING,
81 .feature_checker = sst_feature_check_notification_email,
82 .getter.s = sst_sound_get_email_alert,
83 .setter.s = sst_sound_set_email_alert
85 [SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED] = {
86 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
87 VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
88 SYSTEM_SETTING_DATA_TYPE_BOOL,
89 .feature_checker = NULL,
90 .getter.b = sst_vconf_get_bool,
91 .setter.b = sst_vconf_set_bool
93 [SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED] = {
94 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
96 SYSTEM_SETTING_DATA_TYPE_BOOL,
97 .feature_checker = NULL,
98 .getter.b = sst_vconf_get_bool,
99 .setter.b = sst_vconf_set_bool
101 [SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP] = {
102 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
103 VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR,
104 SYSTEM_SETTING_DATA_TYPE_STRING,
105 .feature_checker = sst_feature_check_lock_screen,
106 .getter.s = sst_screen_get_lockscreen,
107 .setter.s = sst_screen_set_lockscreen
109 [SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE] = {
110 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
112 SYSTEM_SETTING_DATA_TYPE_STRING,
113 .feature_checker = sst_feature_check_font,
114 .getter.s = sst_font_get_default_type,
117 [SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY] = {
118 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
119 VCONFKEY_REGIONFORMAT,
120 SYSTEM_SETTING_DATA_TYPE_STRING,
121 .feature_checker = NULL,
122 .getter.s = sst_locale_get_country,
123 .setter.s = sst_locale_set_country
125 [SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE] = {
126 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
128 SYSTEM_SETTING_DATA_TYPE_STRING,
129 .feature_checker = NULL,
130 .getter.s = sst_locale_get_language,
131 .setter.s = sst_locale_set_language
133 [SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR] = {
134 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
135 VCONFKEY_REGIONFORMAT_TIME1224,
136 SYSTEM_SETTING_DATA_TYPE_BOOL,
137 .feature_checker = NULL,
138 .getter.b = sst_locale_get_timeformat_24hour,
139 .setter.b = sst_locale_set_timeformat_24hour
141 [SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE] = {
142 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
143 VCONFKEY_SETAPPL_TIMEZONE_ID,
144 SYSTEM_SETTING_DATA_TYPE_STRING,
145 .feature_checker = NULL,
146 .getter.s = sst_locale_get_timezone,
147 .setter.s = sst_locale_set_timezone
149 [SYSTEM_SETTINGS_KEY_TIME_CHANGED] = {
150 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
151 VCONFKEY_SYSTEM_TIME_CHANGED,
152 SYSTEM_SETTING_DATA_TYPE_INT,
153 .feature_checker = NULL,
154 .getter.i = sst_time_get_changed,
157 [SYSTEM_SETTINGS_KEY_SOUND_LOCK] = {
158 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
159 VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
160 SYSTEM_SETTING_DATA_TYPE_BOOL,
161 .feature_checker = NULL,
162 .getter.b = sst_vconf_get_bool,
165 [SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE] = {
166 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
167 VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
168 SYSTEM_SETTING_DATA_TYPE_BOOL,
169 .feature_checker = NULL,
170 .getter.b = sst_sound_get_silent_mode,
171 .setter.b = sst_sound_set_silent_mode
173 [SYSTEM_SETTINGS_KEY_SOUND_TOUCH] = {
174 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
175 VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
176 SYSTEM_SETTING_DATA_TYPE_BOOL,
177 .feature_checker = NULL,
178 .getter.b = sst_vconf_get_bool,
179 .setter.b = sst_vconf_set_bool
181 [SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO] = {
182 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
183 VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
184 SYSTEM_SETTING_DATA_TYPE_BOOL,
185 .feature_checker = NULL,
186 .getter.b = sst_vconf_get_bool,
187 .setter.b = sst_vconf_set_bool
189 [SYSTEM_SETTINGS_KEY_DEVICE_NAME] = {
190 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
191 VCONFKEY_SETAPPL_DEVICE_NAME_STR,
192 SYSTEM_SETTING_DATA_TYPE_STRING,
193 .feature_checker = NULL,
194 .getter.s = sst_vconf_get_str,
197 [SYSTEM_SETTINGS_KEY_MOTION_ENABLED] = {
198 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
199 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
200 SYSTEM_SETTING_DATA_TYPE_BOOL,
201 .feature_checker = NULL,
202 .getter.b = sst_vconf_get_bool,
205 [SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION] = {
206 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
207 VCONFKEY_WIFI_ENABLE_QS,
208 SYSTEM_SETTING_DATA_TYPE_BOOL,
209 .feature_checker = sst_feature_check_wifi,
210 .getter.b = sst_misc_get_wifi_QS_noti,
213 [SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE] = {
214 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
215 VCONFKEY_TELEPHONY_FLIGHT_MODE,
216 SYSTEM_SETTING_DATA_TYPE_BOOL,
217 .feature_checker = NULL,
218 .getter.b = sst_vconf_get_bool,
221 [SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME] = {
222 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
223 VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL,
224 SYSTEM_SETTING_DATA_TYPE_INT,
225 .feature_checker = NULL,
226 .getter.i = sst_vconf_get_int,
227 .setter.i = sst_screen_set_backlight_time
229 [SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION] = {
230 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
231 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
232 SYSTEM_SETTING_DATA_TYPE_STRING,
233 .feature_checker = sst_feature_check_incoming_call,
234 .getter.s = sst_vconf_get_str,
235 .setter.s = sst_sound_set_notification
237 [SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD] = {
238 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
239 VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
240 SYSTEM_SETTING_DATA_TYPE_INT,
241 .feature_checker = NULL,
242 .getter.i = sst_vconf_get_int,
243 .setter.i = sst_vconf_set_int
245 [SYSTEM_SETTINGS_KEY_LOCK_STATE] = {
246 SYSTEM_SETTINGS_KEY_LOCK_STATE,
247 VCONFKEY_IDLE_LOCK_STATE_READ_ONLY,
248 SYSTEM_SETTING_DATA_TYPE_INT,
249 .feature_checker = NULL,
250 .getter.i = sst_vconf_get_int,
251 .setter.i = sst_vconf_set_int
253 [SYSTEM_SETTINGS_KEY_ADS_ID] = {
254 SYSTEM_SETTINGS_KEY_ADS_ID,
255 VCONFKEY_SETAPPL_AD_ID,
256 SYSTEM_SETTING_DATA_TYPE_STRING,
257 .feature_checker = NULL,
258 .getter.s = sst_misc_get_ads_id,
259 .setter.s = sst_misc_set_ads_id
261 [SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE] = {
262 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
263 VCONFKEY_SETAPPL_UDSM,
264 SYSTEM_SETTING_DATA_TYPE_INT,
265 .feature_checker = sst_feature_check_telephony,
266 .getter.i = sst_misc_get_uds_state,
269 [SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST] = {
270 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
271 VCONFKEY_SETAPPL_UDSM_PKGID_LIST,
272 SYSTEM_SETTING_DATA_TYPE_STRING,
273 .feature_checker = sst_feature_check_telephony,
277 [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS] = {
278 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
279 VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
280 SYSTEM_SETTING_DATA_TYPE_BOOL,
281 .feature_checker = NULL,
282 .getter.b = sst_vconf_get_bool,
283 .setter.b = sst_vconf_set_bool
285 [SYSTEM_SETTINGS_KEY_VIBRATION] = {
286 SYSTEM_SETTINGS_KEY_VIBRATION,
287 VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
288 SYSTEM_SETTING_DATA_TYPE_BOOL,
289 .feature_checker = NULL,
290 .getter.b = sst_vconf_get_bool,
291 .setter.b = sst_vconf_set_bool
293 [SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE] = {
294 SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE,
295 VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL,
296 SYSTEM_SETTING_DATA_TYPE_BOOL,
297 .feature_checker = sst_feature_check_automatic_time_update,
298 .getter.b = sst_vconf_get_bool,
299 .setter.b = sst_vconf_set_bool
301 [SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE] = {
302 SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE,
303 VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE,
304 SYSTEM_SETTING_DATA_TYPE_BOOL,
305 .feature_checker = NULL,
306 .getter.b = sst_vconf_get_bool,
307 .setter.b = sst_vconf_set_bool
309 [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE] = {
310 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE,
311 VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE,
312 SYSTEM_SETTING_DATA_TYPE_BOOL,
313 .feature_checker = sst_feature_check_accessibility_grayscale,
314 .getter.b = sst_vconf_get_bool,
315 .setter.b = sst_vconf_set_bool
317 [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR] = {
318 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
319 VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST,
320 SYSTEM_SETTING_DATA_TYPE_BOOL,
321 .feature_checker = sst_feature_check_accessibility_negative,
322 .getter.b = sst_vconf_get_bool,
323 .setter.b = sst_vconf_set_bool
325 [SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED] = {
326 SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED,
327 VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL,
328 SYSTEM_SETTING_DATA_TYPE_BOOL,
329 .feature_checker = sst_feature_check_rotary,
330 .getter.b = sst_vconf_get_bool,
331 .setter.b = sst_vconf_set_bool
335 int sst_get_interface(system_settings_key_e key, sst_interface **iface)
337 RETVM_IF(key < 0 || SYSTEM_SETTINGS_KEY_MAX <= key,
338 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid Key(%d)", key);
340 if (sst_iface_table[key].key != key) {
341 ERR("Invalid interface for key(%d)", key);
342 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
345 if (sst_iface_table[key].feature_checker) {
346 int ret = sst_iface_table[key].feature_checker(iface);
347 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
348 ERR("feature_checker(%d) Fail(%d)", key, ret);
353 *iface = &sst_iface_table[key];
354 INFO("key = %d, type = %d", key, (*iface)->data_type);
356 return SYSTEM_SETTINGS_ERROR_NONE;