2 * Copyright (c) 2011 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.
24 #include <system_settings.h>
25 #include <system_settings_private.h>
33 #define LOG_TAG "TIZEN_N_SYSTEM_SETTINGS"
35 #define SYSTEM_SETTINGS_MAX -1
39 system_setting_s system_setting_table[] = {
42 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
43 SYSTEM_SETTING_DATA_TYPE_STRING,
44 system_setting_get_incoming_call_ringtone,
45 system_setting_set_incoming_call_ringtone,
46 system_setting_set_changed_callback_incoming_call_ringtone,
47 system_setting_unset_changed_callback_incoming_call_ringtone,
49 system_setting_add_incoming_call_ringtone, /* ADD */
50 system_setting_del_incoming_call_ringtone, /* DEL */
51 system_setting_list_incoming_call_ringtone, /* LIST */
52 system_setting_feature_check_incoming_call, /* feature check */
57 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
58 SYSTEM_SETTING_DATA_TYPE_STRING,
59 system_setting_get_wallpaper_home_screen,
60 system_setting_set_wallpaper_home_screen,
61 system_setting_set_changed_callback_wallpaper_home_screen,
62 system_setting_unset_changed_callback_wallpaper_home_screen,
67 system_setting_feature_check_home_screen, /* feature check */
72 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
73 SYSTEM_SETTING_DATA_TYPE_STRING,
74 system_setting_get_wallpaper_lock_screen,
75 system_setting_set_wallpaper_lock_screen,
76 system_setting_set_changed_callback_wallpaper_lock_screen,
77 system_setting_unset_changed_callback_wallpaper_lock_screen,
82 system_setting_feature_check_lock_screen, /* feature check */
87 SYSTEM_SETTINGS_KEY_FONT_SIZE,
88 SYSTEM_SETTING_DATA_TYPE_INT,
89 system_setting_get_font_size,
90 system_setting_set_font_size,
91 system_setting_set_changed_callback_font_size,
92 system_setting_unset_changed_callback_font_size,
97 NULL, /* feature check */
102 SYSTEM_SETTINGS_KEY_FONT_TYPE,
103 SYSTEM_SETTING_DATA_TYPE_STRING,
104 system_setting_get_font_type,
105 system_setting_set_font_type,
106 system_setting_set_changed_callback_font_type,
107 system_setting_unset_changed_callback_font_type,
112 NULL, /* feature check */
113 NULL, /* user data */
117 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
118 SYSTEM_SETTING_DATA_TYPE_BOOL,
119 system_setting_get_motion_activation,
120 system_setting_set_motion_activation,
121 system_setting_set_changed_callback_motion_activation,
122 system_setting_unset_changed_callback_motion_activation,
127 NULL, /* feature check */
128 NULL, /* user data */
132 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
133 SYSTEM_SETTING_DATA_TYPE_STRING,
134 system_setting_get_email_alert_ringtone,
135 system_setting_set_email_alert_ringtone,
136 system_setting_set_changed_callback_email_alert_ringtone,
137 system_setting_unset_changed_callback_email_alert_ringtone,
142 system_setting_feature_check_notification_email, /* feature check */
143 NULL, /* user data */
146 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
147 SYSTEM_SETTING_DATA_TYPE_BOOL,
148 system_setting_get_usb_debugging_option,
149 system_setting_set_usb_debugging_option,
150 system_setting_set_changed_callback_usb_debugging_option,
151 system_setting_unset_changed_callback_usb_debugging_option,
156 NULL, /* feature check */
157 NULL, /* user data */
160 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
161 SYSTEM_SETTING_DATA_TYPE_BOOL,
162 system_setting_get_3g_data_network,
163 system_setting_set_3g_data_network,
164 system_setting_set_changed_callback_3g_data_network,
165 system_setting_unset_changed_callback_3g_data_network,
170 NULL, /* feature check */
171 NULL, /* user data */
174 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
175 SYSTEM_SETTING_DATA_TYPE_STRING,
176 system_setting_get_lockscreen_app,
177 system_setting_set_lockscreen_app,
178 system_setting_set_changed_callback_lockscreen_app,
179 system_setting_unset_changed_callback_lockscreen_app,
184 system_setting_feature_check_lock_screen, /* feature check */
185 NULL, /* user data */
188 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
189 SYSTEM_SETTING_DATA_TYPE_STRING,
190 system_setting_get_default_font_type,
198 NULL, /* feature check */
199 NULL, /* user data */
202 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
203 SYSTEM_SETTING_DATA_TYPE_STRING,
204 system_setting_get_locale_country,
205 system_setting_set_locale_country,
206 system_setting_set_changed_callback_locale_country,
207 system_setting_unset_changed_callback_locale_country,
212 NULL, /* feature check */
213 NULL, /* user data */
216 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
217 SYSTEM_SETTING_DATA_TYPE_STRING,
218 system_setting_get_locale_language,
219 system_setting_set_locale_language,
220 system_setting_set_changed_callback_locale_language,
221 system_setting_unset_changed_callback_locale_language,
226 NULL, /* feature check */
227 NULL, /* user data */
230 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
231 SYSTEM_SETTING_DATA_TYPE_BOOL,
232 system_setting_get_locale_timeformat_24hour,
233 system_setting_set_locale_timeformat_24hour,
234 system_setting_set_changed_callback_locale_timeformat_24hour,
235 system_setting_unset_changed_callback_locale_timeformat_24hour,
240 NULL, /* feature check */
241 NULL, /* user data */
244 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
245 SYSTEM_SETTING_DATA_TYPE_STRING,
246 system_setting_get_locale_timezone,
247 system_setting_set_locale_timezone,
248 system_setting_set_changed_callback_locale_timezone,
249 system_setting_unset_changed_callback_locale_timezone,
254 NULL, /* feature check */
255 NULL, /* user data */
258 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
259 SYSTEM_SETTING_DATA_TYPE_INT,
260 system_setting_get_time_changed,
262 system_setting_set_changed_callback_time_changed,
263 system_setting_unset_changed_callback_time_changed,
268 NULL, /* feature check */
269 NULL, /* user data */
272 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
273 SYSTEM_SETTING_DATA_TYPE_BOOL,
274 system_setting_get_sound_lock,
276 system_setting_set_changed_callback_sound_lock,
277 system_setting_unset_changed_callback_sound_lock,
282 NULL, /* feature check */
283 NULL, /* user data */
286 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
287 SYSTEM_SETTING_DATA_TYPE_BOOL,
288 system_setting_get_sound_silent_mode,
289 system_setting_set_sound_silent_mode,
290 system_setting_set_changed_callback_sound_silent_mode,
291 system_setting_unset_changed_callback_sound_silent_mode,
296 NULL, /* feature check */
297 NULL, /* user data */
300 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
301 SYSTEM_SETTING_DATA_TYPE_BOOL,
302 system_setting_get_sound_touch,
304 system_setting_set_changed_callback_sound_touch,
305 system_setting_unset_changed_callback_sound_touch,
310 NULL, /* feature check */
311 NULL, /* user data */
314 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
315 SYSTEM_SETTING_DATA_TYPE_BOOL,
316 system_setting_get_auto_rotation_mode,
317 system_setting_set_auto_rotation_mode,
318 system_setting_set_changed_callback_auto_rotation_mode,
319 system_setting_unset_changed_callback_auto_rotation_mode,
324 NULL, /* feature check */
325 NULL, /* user data */
328 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
329 SYSTEM_SETTING_DATA_TYPE_INT,
330 system_setting_get_screen_backlight_time,
331 system_setting_set_screen_backlight_time,
332 system_setting_set_changed_callback_screen_backlight_time,
333 system_setting_unset_changed_callback_screen_backlight_time,
338 NULL, /* feature check */
339 NULL, /* user data */
342 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
343 SYSTEM_SETTING_DATA_TYPE_STRING,
344 system_setting_get_sound_notification,
345 system_setting_set_sound_notification,
346 system_setting_set_changed_callback_sound_notification,
347 system_setting_unset_changed_callback_sound_notification,
352 system_setting_feature_check_incoming_call, /* feature check */
353 NULL, /* user data */
356 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
357 SYSTEM_SETTING_DATA_TYPE_INT,
358 system_setting_get_notification_repetition_period,
359 system_setting_set_notification_repetition_period,
360 system_setting_set_changed_callback_notification_repetition_period,
361 system_setting_unset_changed_callback_notification_repetition_period,
366 NULL, /* feature check */
367 NULL, /* user data */
370 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
371 SYSTEM_SETTING_DATA_TYPE_STRING,
372 system_setting_get_device_name,
374 system_setting_set_changed_callback_device_name,
375 system_setting_unset_changed_callback_device_name,
380 NULL, /* feature check */
381 NULL, /* user data */
384 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
385 SYSTEM_SETTING_DATA_TYPE_BOOL,
386 system_setting_get_motion_activation,
388 system_setting_set_changed_callback_motion_activation,
389 system_setting_unset_changed_callback_motion_activation,
394 NULL, /* feature check */
395 NULL, /* user data */
398 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
399 SYSTEM_SETTING_DATA_TYPE_BOOL,
400 system_setting_get_network_flight_mode,
402 system_setting_set_changed_callback_network_flight_mode,
403 system_setting_unset_changed_callback_network_flight_mode,
408 NULL, /* feature check */
409 NULL, /* user data */
412 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
413 SYSTEM_SETTING_DATA_TYPE_BOOL,
414 system_setting_get_network_wifi_notification,
416 system_setting_set_changed_callback_network_wifi_notification,
417 system_setting_unset_changed_callback_network_wifi_notification,
422 system_setting_feature_check_wifi, /* feature check */
423 NULL, /* user data */
426 SYSTEM_SETTINGS_KEY_LOCK_STATE,
427 SYSTEM_SETTING_DATA_TYPE_INT,
428 system_setting_get_lock_state,
429 system_setting_set_lock_state,
430 system_setting_set_changed_callback_lock_state,
431 system_setting_unset_changed_callback_lock_state,
436 NULL, /* feature check */
437 NULL, /* user data */
440 SYSTEM_SETTINGS_KEY_ADS_ID,
441 SYSTEM_SETTING_DATA_TYPE_STRING,
442 system_setting_get_ads_id,
443 system_setting_set_ads_id,
444 system_setting_set_changed_callback_ads_id,
445 system_setting_unset_changed_callback_ads_id,
450 system_setting_feature_check_telephony, /* feature check */
451 NULL, /* user data */
455 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
456 SYSTEM_SETTING_DATA_TYPE_INT,
457 system_setting_get_uds_state,
459 system_setting_set_changed_callback_uds_state,
460 system_setting_unset_changed_callback_uds_state,
465 system_setting_feature_check_telephony, /* feature check */
466 NULL, /* user data */
469 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
470 SYSTEM_SETTING_DATA_TYPE_STRING,
473 system_setting_set_changed_callback_uds_pkg_list,
474 system_setting_unset_changed_callback_uds_pkg_list,
479 system_setting_feature_check_telephony, /* feature check */
480 NULL, /* user data */
483 SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
488 static void _dump_context()
491 /*int max = SYSTEM_SETTINGS_MAX; */
492 int max = sizeof(system_setting_table) / sizeof(system_setting_s) - 1 ;
494 for (i = 0; i < max; i++) {
495 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
496 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
497 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
498 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
500 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
501 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
502 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
507 /* LCOV_EXCL_START */
508 static int _dump_context_node(int key)
512 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
513 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
516 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
517 if (system_setting_table[index].key == key) {
519 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
520 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
521 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
522 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
523 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
524 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
525 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
536 int system_settings_get_item(system_settings_key_e key, system_setting_h *item)
538 LOGE("Enter [%s], key=%d", __FUNCTION__, key);
540 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
541 LOGE("Enter [%s] catch invalid parameter error (%d) ", __FUNCTION__, key);
542 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
548 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
549 if (system_setting_table[index].key == key) {
550 *item = &system_setting_table[index];
551 LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type);
552 if (system_setting_table[index].feature_check_cb != NULL) {
553 int ret = system_setting_table[index].feature_check_cb(item);
554 if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) {
555 LOGE("Not supported API, because there is no feature!");
559 return SYSTEM_SETTINGS_ERROR_NONE;
566 return TIZEN_ERROR_INVALID_PARAMETER;
569 int system_settings_get_value(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
571 LOGE("Enter [%s]", __FUNCTION__);
572 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
573 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
576 system_setting_h system_setting_item;
577 system_setting_get_value_cb system_setting_getter;
579 int ret = system_settings_get_item(key, &system_setting_item);
581 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) {
582 _dump_context_node(key);
583 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
588 if (system_setting_item->data_type != data_type) {
589 _dump_context_node(key);
590 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key:(%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type);
591 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
594 system_setting_getter = system_setting_item->get_value_cb;
596 if (system_setting_getter == NULL) {
597 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
598 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
601 return system_setting_getter(key, system_setting_item->data_type, value);
604 /* LCOV_EXCL_START */
605 int system_settings_set_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
607 LOGE("Enter [%s]", __FUNCTION__);
608 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
609 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
613 system_setting_h system_setting_item;
614 system_setting_set_value_cb system_setting_setter;
616 int ret = system_settings_get_item(key, &system_setting_item);
619 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
620 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
625 if (system_setting_item->data_type != data_type) {
626 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
627 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
630 system_setting_setter = system_setting_item->set_value_cb;
632 if (system_setting_setter == NULL) {
633 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
634 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
637 return system_setting_setter(key, system_setting_item->data_type, value);
643 int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
645 LOGE("Enter [%s]", __FUNCTION__);
646 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
647 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
651 system_setting_h system_setting_item;
652 system_setting_add_value_cb system_setting_adder;
654 int ret = system_settings_get_item(key, &system_setting_item);
657 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
658 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
663 if (system_setting_item->data_type != data_type) {
664 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
665 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
668 system_setting_adder = system_setting_item->add_value_cb;
670 if (system_setting_adder == NULL) {
671 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
672 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
675 return system_setting_adder(key, system_setting_item->data_type, value);
679 int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
681 LOGE("Enter [%s]", __FUNCTION__);
682 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
683 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
687 system_setting_h system_setting_item;
688 system_setting_del_value_cb system_setting_deler;
690 int ret = system_settings_get_item(key, &system_setting_item);
693 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
694 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
698 if (system_setting_item->data_type != data_type) {
699 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
700 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
703 system_setting_deler = system_setting_item->del_value_cb;
705 if (system_setting_deler == NULL) {
706 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
707 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
710 return system_setting_deler(key, system_setting_item->data_type, value);
717 int system_settings_list_value(system_settings_key_e key, system_setting_data_type_e data_type, bool (*system_setting_data_iterator)(int, const char* , void *), void *user_data)
719 LOGE("Enter [%s]", __FUNCTION__);
720 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
721 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
725 system_setting_h system_setting_item;
726 system_setting_list_value_cb system_setting_lister;
728 int ret = system_settings_get_item(key, &system_setting_item);
731 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
732 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
737 if (system_setting_item->data_type != data_type) {
738 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
739 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
742 //system_setting_list_value_cb list_changed_cb;
743 system_setting_lister = system_setting_item->list_value_cb;
745 if (system_setting_lister == NULL) {
746 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
747 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
750 return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, user_data);
758 /* LCOV_EXCL_START */
759 int system_settings_set_value_int(system_settings_key_e key, int value)
761 LOGE("Enter [%s]", __FUNCTION__);
762 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
763 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
768 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
772 int system_settings_get_value_int(system_settings_key_e key, int *value)
774 LOGE("Enter [%s]", __FUNCTION__);
775 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
776 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
779 int *ptr = &value_int;
782 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
787 /* LCOV_EXCL_START */
788 int system_settings_set_value_bool(system_settings_key_e key, bool value)
790 LOGE("Enter [%s]", __FUNCTION__);
791 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
792 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
796 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
800 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
802 LOGE("Enter [%s]", __FUNCTION__);
803 SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
804 signed long flag = 0;
808 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
809 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
812 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
813 SETTING_TRACE(" inf (flag) value : %d ", flag);
816 SETTING_TRACE(" flag == 0 ");
817 } else if (flag == 1) {
819 SETTING_TRACE(" flag == 1 ");
822 SETTING_TRACE(" exception here!!! ");
828 /* LCOV_EXCL_START */
829 int system_settings_set_value_string(system_settings_key_e key, const char *value)
831 LOGE("Enter [%s]", __FUNCTION__);
832 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
833 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
837 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
838 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
840 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
844 int system_settings_get_value_string(system_settings_key_e key, char **value)
846 LOGE("Enter [%s]", __FUNCTION__);
847 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
848 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
851 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
856 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
858 LOGE("Enter [%s]", __FUNCTION__);
859 system_setting_h system_setting_item;
860 system_setting_set_changed_callback_cb system_setting_set_changed_cb;
862 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
863 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
866 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
867 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
869 int ret = system_settings_get_item(key, &system_setting_item);
871 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
872 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
876 system_setting_set_changed_cb = system_setting_item->set_changed_cb;
879 /* Store the callback function from application side */
881 system_setting_item->changed_cb = callback;
884 system_setting_item->user_data = user_data;
886 if (system_setting_set_changed_cb == NULL) {
887 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
888 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
891 return system_setting_set_changed_cb(key, callback, user_data);
895 int system_settings_unset_changed_cb(system_settings_key_e key)
897 LOGE("Enter [%s]", __FUNCTION__);
898 system_setting_h system_setting_item;
899 system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
901 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
902 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
905 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
906 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
908 int ret = system_settings_get_item(key, &system_setting_item);
910 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
911 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
915 system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
917 /* free the callback function from application side */
918 if (system_setting_item->changed_cb)
919 system_setting_item->changed_cb = NULL;
920 /*----------------------------------------------------- */
922 if (system_setting_unset_changed_cb == NULL) {
923 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
924 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
927 return system_setting_unset_changed_cb(key);
930 //////////////////////////////////////////////////////////////////////////////////////////////////
932 //////////////////////////////////////////////////////////////////////////////////////////////////
934 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
936 LOGE("Enter [%s]", __FUNCTION__);
937 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
938 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
941 return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
944 //////////////////////////////////////////////////////////////////////////////////////////////////
946 //////////////////////////////////////////////////////////////////////////////////////////////////
948 int system_settings_add_value_string(system_settings_key_e key, const char* value)
950 LOGE("Enter [%s]", __FUNCTION__);
951 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
952 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
955 return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
958 //////////////////////////////////////////////////////////////////////////////////////////////////
960 //////////////////////////////////////////////////////////////////////////////////////////////////
962 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
964 LOGE("Enter [%s]", __FUNCTION__);
965 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
966 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
969 return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);