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_KEY_ACCESSIBILITY_TTS,
484 SYSTEM_SETTING_DATA_TYPE_BOOL,
485 system_setting_get_accessibility_tts,
487 system_setting_set_changed_callback_accessibility_tts,
488 system_setting_unset_changed_callback_accessibility_tts,
493 NULL, /* feature check */
494 NULL, /* user data */
497 SYSTEM_SETTINGS_KEY_VIBRATION,
498 SYSTEM_SETTING_DATA_TYPE_BOOL,
499 system_setting_get_vibration,
500 system_setting_set_vibration,
501 system_setting_set_changed_callback_vibration,
502 system_setting_unset_changed_callback_vibration,
507 NULL, /* feature check */
508 NULL, /* user data */
511 SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
516 static void _dump_context()
519 /*int max = SYSTEM_SETTINGS_MAX; */
520 int max = sizeof(system_setting_table) / sizeof(system_setting_s) - 1 ;
522 for (i = 0; i < max; i++) {
523 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
524 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
525 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
526 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
528 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
529 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
530 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
535 /* LCOV_EXCL_START */
536 static int _dump_context_node(int key)
540 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
541 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
544 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
545 if (system_setting_table[index].key == key) {
547 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
548 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
549 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
550 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
551 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
552 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
553 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
564 int system_settings_get_item(system_settings_key_e key, system_setting_h *item)
566 LOGE("Enter [%s], key=%d", __FUNCTION__, key);
568 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
569 LOGE("Enter [%s] catch invalid parameter error (%d) ", __FUNCTION__, key);
570 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
576 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
577 if (system_setting_table[index].key == key) {
578 *item = &system_setting_table[index];
579 LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type);
580 if (system_setting_table[index].feature_check_cb != NULL) {
581 int ret = system_setting_table[index].feature_check_cb(item);
582 if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) {
583 LOGE("Not supported API, because there is no feature!");
587 return SYSTEM_SETTINGS_ERROR_NONE;
594 return TIZEN_ERROR_INVALID_PARAMETER;
597 int system_settings_get_value(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
599 LOGE("Enter [%s]", __FUNCTION__);
600 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
601 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
604 system_setting_h system_setting_item;
605 system_setting_get_value_cb system_setting_getter;
607 int ret = system_settings_get_item(key, &system_setting_item);
609 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) {
610 _dump_context_node(key);
611 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
616 if (system_setting_item->data_type != data_type) {
617 _dump_context_node(key);
618 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key:(%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type);
619 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
622 system_setting_getter = system_setting_item->get_value_cb;
624 if (system_setting_getter == NULL) {
625 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
626 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
629 return system_setting_getter(key, system_setting_item->data_type, value);
632 /* LCOV_EXCL_START */
633 int system_settings_set_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
635 LOGE("Enter [%s]", __FUNCTION__);
636 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
637 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
641 system_setting_h system_setting_item;
642 system_setting_set_value_cb system_setting_setter;
644 int ret = system_settings_get_item(key, &system_setting_item);
647 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
648 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
653 if (system_setting_item->data_type != data_type) {
654 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
655 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
658 system_setting_setter = system_setting_item->set_value_cb;
660 if (system_setting_setter == NULL) {
661 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
662 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
665 return system_setting_setter(key, system_setting_item->data_type, value);
671 int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
673 LOGE("Enter [%s]", __FUNCTION__);
674 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
675 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
679 system_setting_h system_setting_item;
680 system_setting_add_value_cb system_setting_adder;
682 int ret = system_settings_get_item(key, &system_setting_item);
685 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
686 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
691 if (system_setting_item->data_type != data_type) {
692 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
693 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
696 system_setting_adder = system_setting_item->add_value_cb;
698 if (system_setting_adder == NULL) {
699 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
700 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
703 return system_setting_adder(key, system_setting_item->data_type, value);
707 int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
709 LOGE("Enter [%s]", __FUNCTION__);
710 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
711 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
715 system_setting_h system_setting_item;
716 system_setting_del_value_cb system_setting_deler;
718 int ret = system_settings_get_item(key, &system_setting_item);
721 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
722 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
726 if (system_setting_item->data_type != data_type) {
727 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
728 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
731 system_setting_deler = system_setting_item->del_value_cb;
733 if (system_setting_deler == NULL) {
734 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
735 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
738 return system_setting_deler(key, system_setting_item->data_type, value);
745 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)
747 LOGE("Enter [%s]", __FUNCTION__);
748 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
749 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
753 system_setting_h system_setting_item;
754 system_setting_list_value_cb system_setting_lister;
756 int ret = system_settings_get_item(key, &system_setting_item);
759 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
760 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
765 if (system_setting_item->data_type != data_type) {
766 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
767 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
770 //system_setting_list_value_cb list_changed_cb;
771 system_setting_lister = system_setting_item->list_value_cb;
773 if (system_setting_lister == NULL) {
774 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
775 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
778 return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, user_data);
786 /* LCOV_EXCL_START */
787 int system_settings_set_value_int(system_settings_key_e key, int value)
789 LOGE("Enter [%s]", __FUNCTION__);
790 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
791 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
796 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
800 int system_settings_get_value_int(system_settings_key_e key, int *value)
802 LOGE("Enter [%s]", __FUNCTION__);
803 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
804 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
807 int *ptr = &value_int;
810 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
815 /* LCOV_EXCL_START */
816 int system_settings_set_value_bool(system_settings_key_e key, bool value)
818 LOGE("Enter [%s]", __FUNCTION__);
819 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
820 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
824 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
828 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
830 LOGE("Enter [%s]", __FUNCTION__);
831 SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
832 signed long flag = 0;
836 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
837 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
840 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
841 SETTING_TRACE(" inf (flag) value : %d ", flag);
844 SETTING_TRACE(" flag == 0 ");
845 } else if (flag == 1) {
847 SETTING_TRACE(" flag == 1 ");
850 SETTING_TRACE(" exception here!!! ");
856 /* LCOV_EXCL_START */
857 int system_settings_set_value_string(system_settings_key_e key, const char *value)
859 LOGE("Enter [%s]", __FUNCTION__);
860 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
861 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
865 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
866 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
868 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
872 int system_settings_get_value_string(system_settings_key_e key, char **value)
874 LOGE("Enter [%s]", __FUNCTION__);
875 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
876 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
879 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
884 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
886 LOGE("Enter [%s]", __FUNCTION__);
887 system_setting_h system_setting_item;
888 system_setting_set_changed_callback_cb system_setting_set_changed_cb;
890 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
891 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
894 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
895 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
897 int ret = system_settings_get_item(key, &system_setting_item);
899 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
900 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
904 system_setting_set_changed_cb = system_setting_item->set_changed_cb;
907 /* Store the callback function from application side */
909 system_setting_item->changed_cb = callback;
912 system_setting_item->user_data = user_data;
914 if (system_setting_set_changed_cb == NULL) {
915 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
916 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
919 return system_setting_set_changed_cb(key, callback, user_data);
923 int system_settings_unset_changed_cb(system_settings_key_e key)
925 LOGE("Enter [%s]", __FUNCTION__);
926 system_setting_h system_setting_item;
927 system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
929 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
930 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
933 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
934 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
936 int ret = system_settings_get_item(key, &system_setting_item);
938 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
939 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
943 system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
945 /* free the callback function from application side */
946 if (system_setting_item->changed_cb)
947 system_setting_item->changed_cb = NULL;
948 /*----------------------------------------------------- */
950 if (system_setting_unset_changed_cb == NULL) {
951 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
952 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
955 return system_setting_unset_changed_cb(key);
958 //////////////////////////////////////////////////////////////////////////////////////////////////
960 //////////////////////////////////////////////////////////////////////////////////////////////////
962 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *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_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
972 //////////////////////////////////////////////////////////////////////////////////////////////////
974 //////////////////////////////////////////////////////////////////////////////////////////////////
976 int system_settings_add_value_string(system_settings_key_e key, const char* value)
978 LOGE("Enter [%s]", __FUNCTION__);
979 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
980 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
983 return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
986 //////////////////////////////////////////////////////////////////////////////////////////////////
988 //////////////////////////////////////////////////////////////////////////////////////////////////
990 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
992 LOGE("Enter [%s]", __FUNCTION__);
993 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
994 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
997 return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);