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.
22 #include <system_settings.h>
23 #include <system_settings_private.h>
31 #define LOG_TAG "TIZEN_N_SYSTEM_SETTINGS"
33 #define SYSTEM_SETTINGS_MAX -1
35 system_setting_s system_setting_table[] = {
38 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
39 SYSTEM_SETTING_DATA_TYPE_STRING,
40 system_setting_get_incoming_call_ringtone,
41 system_setting_set_incoming_call_ringtone,
42 system_setting_set_changed_callback_incoming_call_ringtone,
43 system_setting_unset_changed_callback_incoming_call_ringtone,
45 system_setting_add_incoming_call_ringtone, /* ADD */
46 system_setting_del_incoming_call_ringtone, /* DEL */
47 system_setting_list_incoming_call_ringtone, /* LIST */
48 system_setting_feature_check_incoming_call, /* feature check */
49 { NULL, 0 }, /* changed callabck list */
54 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
55 SYSTEM_SETTING_DATA_TYPE_STRING,
56 system_setting_get_wallpaper_home_screen,
57 system_setting_set_wallpaper_home_screen,
58 system_setting_set_changed_callback_wallpaper_home_screen,
59 system_setting_unset_changed_callback_wallpaper_home_screen,
64 system_setting_feature_check_home_screen, /* feature check */
65 { NULL, 0 }, /* changed callabck list */
70 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
71 SYSTEM_SETTING_DATA_TYPE_STRING,
72 system_setting_get_wallpaper_lock_screen,
73 system_setting_set_wallpaper_lock_screen,
74 system_setting_set_changed_callback_wallpaper_lock_screen,
75 system_setting_unset_changed_callback_wallpaper_lock_screen,
80 system_setting_feature_check_lock_screen, /* feature check */
81 { NULL, 0 }, /* changed callabck list */
86 SYSTEM_SETTINGS_KEY_FONT_SIZE,
87 SYSTEM_SETTING_DATA_TYPE_INT,
88 system_setting_get_font_size,
89 system_setting_set_font_size,
90 system_setting_set_changed_callback_font_size,
91 system_setting_unset_changed_callback_font_size,
96 system_setting_feature_check_font, /* feature check */
97 { NULL, 0 }, /* changed callabck list */
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 system_setting_feature_check_font, /* feature check */
113 { NULL, 0 }, /* changed callabck list */
114 NULL, /* user data */
118 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
119 SYSTEM_SETTING_DATA_TYPE_BOOL,
120 system_setting_get_motion_activation,
121 system_setting_set_motion_activation,
122 system_setting_set_changed_callback_motion_activation,
123 system_setting_unset_changed_callback_motion_activation,
128 NULL, /* feature check */
129 { NULL, 0 }, /* changed callabck list */
130 NULL, /* user data */
134 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
135 SYSTEM_SETTING_DATA_TYPE_STRING,
136 system_setting_get_email_alert_ringtone,
137 system_setting_set_email_alert_ringtone,
138 system_setting_set_changed_callback_email_alert_ringtone,
139 system_setting_unset_changed_callback_email_alert_ringtone,
144 system_setting_feature_check_notification_email, /* feature check */
145 { NULL, 0 }, /* changed callabck list */
146 NULL, /* user data */
149 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
150 SYSTEM_SETTING_DATA_TYPE_BOOL,
151 system_setting_get_usb_debugging_option,
152 system_setting_set_usb_debugging_option,
153 system_setting_set_changed_callback_usb_debugging_option,
154 system_setting_unset_changed_callback_usb_debugging_option,
159 NULL, /* feature check */
160 { NULL, 0 }, /* changed callabck list */
161 NULL, /* user data */
164 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
165 SYSTEM_SETTING_DATA_TYPE_BOOL,
166 system_setting_get_3g_data_network,
167 system_setting_set_3g_data_network,
168 system_setting_set_changed_callback_3g_data_network,
169 system_setting_unset_changed_callback_3g_data_network,
174 NULL, /* feature check */
175 { NULL, 0 }, /* changed callabck list */
176 NULL, /* user data */
179 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
180 SYSTEM_SETTING_DATA_TYPE_STRING,
181 system_setting_get_lockscreen_app,
182 system_setting_set_lockscreen_app,
183 system_setting_set_changed_callback_lockscreen_app,
184 system_setting_unset_changed_callback_lockscreen_app,
189 system_setting_feature_check_lock_screen, /* feature check */
190 { NULL, 0 }, /* changed callabck list */
191 NULL, /* user data */
194 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
195 SYSTEM_SETTING_DATA_TYPE_STRING,
196 system_setting_get_default_font_type,
204 system_setting_feature_check_font, /* feature check */
205 { NULL, 0 }, /* changed callabck list */
206 NULL, /* user data */
209 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
210 SYSTEM_SETTING_DATA_TYPE_STRING,
211 system_setting_get_locale_country,
212 system_setting_set_locale_country,
213 system_setting_set_changed_callback_locale_country,
214 system_setting_unset_changed_callback_locale_country,
219 NULL, /* feature check */
220 { NULL, 0 }, /* changed callabck list */
221 NULL, /* user data */
224 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
225 SYSTEM_SETTING_DATA_TYPE_STRING,
226 system_setting_get_locale_language,
227 system_setting_set_locale_language,
228 system_setting_set_changed_callback_locale_language,
229 system_setting_unset_changed_callback_locale_language,
234 NULL, /* feature check */
235 { NULL, 0 }, /* changed callabck list */
236 NULL, /* user data */
239 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
240 SYSTEM_SETTING_DATA_TYPE_BOOL,
241 system_setting_get_locale_timeformat_24hour,
242 system_setting_set_locale_timeformat_24hour,
243 system_setting_set_changed_callback_locale_timeformat_24hour,
244 system_setting_unset_changed_callback_locale_timeformat_24hour,
249 NULL, /* feature check */
250 { NULL, 0 }, /* changed callabck list */
251 NULL, /* user data */
254 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
255 SYSTEM_SETTING_DATA_TYPE_STRING,
256 system_setting_get_locale_timezone,
257 system_setting_set_locale_timezone,
258 system_setting_set_changed_callback_locale_timezone,
259 system_setting_unset_changed_callback_locale_timezone,
264 NULL, /* feature check */
265 { NULL, 0 }, /* changed callabck list */
266 NULL, /* user data */
269 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
270 SYSTEM_SETTING_DATA_TYPE_INT,
271 system_setting_get_time_changed,
273 system_setting_set_changed_callback_time_changed,
274 system_setting_unset_changed_callback_time_changed,
279 NULL, /* feature check */
280 { NULL, 0 }, /* changed callabck list */
281 NULL, /* user data */
284 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
285 SYSTEM_SETTING_DATA_TYPE_BOOL,
286 system_setting_get_sound_lock,
288 system_setting_set_changed_callback_sound_lock,
289 system_setting_unset_changed_callback_sound_lock,
294 NULL, /* feature check */
295 { NULL, 0 }, /* changed callabck list */
296 NULL, /* user data */
299 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
300 SYSTEM_SETTING_DATA_TYPE_BOOL,
301 system_setting_get_sound_silent_mode,
302 system_setting_set_sound_silent_mode,
303 system_setting_set_changed_callback_sound_silent_mode,
304 system_setting_unset_changed_callback_sound_silent_mode,
309 NULL, /* feature check */
310 { NULL, 0 }, /* changed callabck list */
311 NULL, /* user data */
314 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
315 SYSTEM_SETTING_DATA_TYPE_BOOL,
316 system_setting_get_sound_touch,
317 system_setting_set_sound_touch,
318 system_setting_set_changed_callback_sound_touch,
319 system_setting_unset_changed_callback_sound_touch,
324 NULL, /* feature check */
325 { NULL, 0 }, /* changed callabck list */
326 NULL, /* user data */
329 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
330 SYSTEM_SETTING_DATA_TYPE_BOOL,
331 system_setting_get_auto_rotation_mode,
332 system_setting_set_auto_rotation_mode,
333 system_setting_set_changed_callback_auto_rotation_mode,
334 system_setting_unset_changed_callback_auto_rotation_mode,
339 NULL, /* feature check */
340 { NULL, 0 }, /* changed callabck list */
341 NULL, /* user data */
344 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
345 SYSTEM_SETTING_DATA_TYPE_INT,
346 system_setting_get_screen_backlight_time,
347 system_setting_set_screen_backlight_time,
348 system_setting_set_changed_callback_screen_backlight_time,
349 system_setting_unset_changed_callback_screen_backlight_time,
354 NULL, /* feature check */
355 { NULL, 0 }, /* changed callabck list */
356 NULL, /* user data */
359 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
360 SYSTEM_SETTING_DATA_TYPE_STRING,
361 system_setting_get_sound_notification,
362 system_setting_set_sound_notification,
363 system_setting_set_changed_callback_sound_notification,
364 system_setting_unset_changed_callback_sound_notification,
369 system_setting_feature_check_incoming_call, /* feature check */
370 { NULL, 0 }, /* changed callabck list */
371 NULL, /* user data */
374 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
375 SYSTEM_SETTING_DATA_TYPE_INT,
376 system_setting_get_notification_repetition_period,
377 system_setting_set_notification_repetition_period,
378 system_setting_set_changed_callback_notification_repetition_period,
379 system_setting_unset_changed_callback_notification_repetition_period,
384 NULL, /* feature check */
385 { NULL, 0 }, /* changed callabck list */
386 NULL, /* user data */
389 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
390 SYSTEM_SETTING_DATA_TYPE_STRING,
391 system_setting_get_device_name,
393 system_setting_set_changed_callback_device_name,
394 system_setting_unset_changed_callback_device_name,
399 NULL, /* feature check */
400 { NULL, 0 }, /* changed callabck list */
401 NULL, /* user data */
404 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
405 SYSTEM_SETTING_DATA_TYPE_BOOL,
406 system_setting_get_motion_activation,
408 system_setting_set_changed_callback_motion_activation,
409 system_setting_unset_changed_callback_motion_activation,
414 NULL, /* feature check */
415 { NULL, 0 }, /* changed callabck list */
416 NULL, /* user data */
419 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
420 SYSTEM_SETTING_DATA_TYPE_BOOL,
421 system_setting_get_network_flight_mode,
423 system_setting_set_changed_callback_network_flight_mode,
424 system_setting_unset_changed_callback_network_flight_mode,
429 NULL, /* feature check */
430 { NULL, 0 }, /* changed callabck list */
431 NULL, /* user data */
434 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
435 SYSTEM_SETTING_DATA_TYPE_BOOL,
436 system_setting_get_network_wifi_notification,
438 system_setting_set_changed_callback_network_wifi_notification,
439 system_setting_unset_changed_callback_network_wifi_notification,
444 system_setting_feature_check_wifi, /* feature check */
445 { NULL, 0 }, /* changed callabck list */
446 NULL, /* user data */
449 SYSTEM_SETTINGS_KEY_LOCK_STATE,
450 SYSTEM_SETTING_DATA_TYPE_INT,
451 system_setting_get_lock_state,
452 system_setting_set_lock_state,
453 system_setting_set_changed_callback_lock_state,
454 system_setting_unset_changed_callback_lock_state,
459 NULL, /* feature check */
460 { NULL, 0 }, /* changed callabck list */
461 NULL, /* user data */
464 SYSTEM_SETTINGS_KEY_ADS_ID,
465 SYSTEM_SETTING_DATA_TYPE_STRING,
466 system_setting_get_ads_id,
467 system_setting_set_ads_id,
468 system_setting_set_changed_callback_ads_id,
469 system_setting_unset_changed_callback_ads_id,
474 NULL, /* feature check */
475 { NULL, 0 }, /* changed callabck list */
476 NULL, /* user data */
480 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
481 SYSTEM_SETTING_DATA_TYPE_INT,
482 system_setting_get_uds_state,
484 system_setting_set_changed_callback_uds_state,
485 system_setting_unset_changed_callback_uds_state,
490 system_setting_feature_check_telephony, /* feature check */
491 { NULL, 0 }, /* changed callabck list */
492 NULL, /* user data */
495 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
496 SYSTEM_SETTING_DATA_TYPE_STRING,
499 system_setting_set_changed_callback_uds_pkg_list,
500 system_setting_unset_changed_callback_uds_pkg_list,
505 system_setting_feature_check_telephony, /* feature check */
506 { NULL, 0 }, /* changed callabck list */
507 NULL, /* user data */
510 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
511 SYSTEM_SETTING_DATA_TYPE_BOOL,
512 system_setting_get_accessibility_tts,
513 system_setting_set_accessibility_tts,
514 system_setting_set_changed_callback_accessibility_tts,
515 system_setting_unset_changed_callback_accessibility_tts,
520 NULL, /* feature check */
521 { NULL, 0 }, /* changed callabck list */
522 NULL, /* user data */
525 SYSTEM_SETTINGS_KEY_VIBRATION,
526 SYSTEM_SETTING_DATA_TYPE_BOOL,
527 system_setting_get_vibration,
528 system_setting_set_vibration,
529 system_setting_set_changed_callback_vibration,
530 system_setting_unset_changed_callback_vibration,
535 NULL, /* feature check */
536 { NULL, 0 }, /* changed callabck list */
537 NULL, /* user data */
540 SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE,
541 SYSTEM_SETTING_DATA_TYPE_BOOL,
542 system_setting_get_automatic_time_update,
543 system_setting_set_automatic_time_update,
544 system_setting_set_changed_callback_automatic_time_update,
545 system_setting_unset_changed_callback_automatic_time_update,
550 system_setting_feature_check_telephony, /* feature check */
551 { NULL, 0 }, /* changed callabck list */
552 NULL, /* user data */
555 SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE,
556 SYSTEM_SETTING_DATA_TYPE_BOOL,
557 system_setting_get_developer_option_state,
558 system_setting_set_developer_option_state,
559 system_setting_set_changed_callback_developer_option_state,
560 system_setting_unset_changed_callback_developer_option_state,
565 NULL, /* feature check */
566 { NULL, 0 }, /* changed callabck list */
567 NULL, /* user data */
570 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE,
571 SYSTEM_SETTING_DATA_TYPE_BOOL,
572 system_setting_get_accessibility_grayscale,
573 system_setting_set_accessibility_grayscale,
574 system_setting_set_changed_callback_accessibility_grayscale,
575 system_setting_unset_changed_callback_accessibility_grayscale,
580 system_setting_feature_check_accessibility_grayscale, /* feature check */
581 { NULL, 0 }, /* changed callabck list */
582 NULL, /* user data */
585 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
586 SYSTEM_SETTING_DATA_TYPE_BOOL,
587 system_setting_get_accessibility_negative_color,
588 system_setting_set_accessibility_negative_color,
589 system_setting_set_changed_callback_accessibility_negative_color,
590 system_setting_unset_changed_callback_accessibility_negative_color,
595 system_setting_feature_check_accessibility_negative, /* feature check */
596 { NULL, 0 }, /* changed callabck list */
597 NULL, /* user data */
600 SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED,
601 SYSTEM_SETTING_DATA_TYPE_BOOL,
602 system_setting_get_rotary_event_enabled,
603 system_setting_set_rotary_event_enabled,
604 system_setting_set_changed_callback_rotary_event_enabled,
605 system_setting_unset_changed_callback_rotary_event_enabled,
610 system_setting_feature_check_wearable_profile, /* feature check */
611 { NULL, 0 }, /* changed callabck list */
612 NULL, /* user data */
615 SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, { NULL, 0 }, NULL
620 static void _dump_context()
623 /*int max = SYSTEM_SETTINGS_MAX; */
624 int max = sizeof(system_setting_table) / sizeof(system_setting_s) - 1 ;
626 for (i = 0; i < max; i++) {
627 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
628 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
629 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
630 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
632 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
633 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
634 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
639 /* LCOV_EXCL_START */
640 static int _dump_context_node(int key)
644 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
645 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
648 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
649 if (system_setting_table[index].key == key) {
651 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
652 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
653 LOGE("[%s] system_setting_table[i].get_value_cb = %p", __FUNCTION__, system_setting_table[i].get_value_cb);
654 LOGE("[%s] system_setting_table[i].set_value_cb = %p", __FUNCTION__, system_setting_table[i].set_value_cb);
655 LOGE("[%s] system_setting_table[i].set_changed_cb = %p <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
656 LOGE("[%s] system_setting_table[i].unset_changed_cb = %p", __FUNCTION__, system_setting_table[i].unset_changed_cb);
657 LOGE("[%s] system_setting_table[i].changed_cb = %p", __FUNCTION__, system_setting_table[i].changed_cb);
667 int system_settings_get_item(system_settings_key_e key, system_setting_h *item)
669 LOGE("Enter [%s], key=%d", __FUNCTION__, key);
671 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
672 LOGE("Enter [%s] catch invalid parameter error (%d) ", __FUNCTION__, key);
673 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
679 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
680 if (system_setting_table[index].key == key) {
681 *item = &system_setting_table[index];
682 LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type);
683 if (system_setting_table[index].feature_check_cb != NULL) {
684 int ret = system_setting_table[index].feature_check_cb(item);
685 if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) {
686 LOGE("Not supported API, because there is no feature!");
690 return SYSTEM_SETTINGS_ERROR_NONE;
697 return TIZEN_ERROR_INVALID_PARAMETER;
700 int system_settings_get_value(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
702 LOGE("Enter [%s]", __FUNCTION__);
703 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
704 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
707 system_setting_h system_setting_item;
708 system_setting_get_value_cb system_setting_getter;
710 int ret = system_settings_get_item(key, &system_setting_item);
712 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) {
713 _dump_context_node(key);
714 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
719 if (system_setting_item->data_type != data_type) {
720 _dump_context_node(key);
721 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key:(%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type);
722 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
725 system_setting_getter = system_setting_item->get_value_cb;
727 if (system_setting_getter == NULL) {
728 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
729 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
732 return system_setting_getter(key, value);
735 /* LCOV_EXCL_START */
736 int system_settings_set_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
738 LOGE("Enter [%s]", __FUNCTION__);
739 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
740 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
744 system_setting_h system_setting_item;
745 system_setting_set_value_cb system_setting_setter;
747 int ret = system_settings_get_item(key, &system_setting_item);
750 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
751 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
756 if (system_setting_item->data_type != data_type) {
757 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
758 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
761 system_setting_setter = system_setting_item->set_value_cb;
763 if (system_setting_setter == NULL) {
764 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
765 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
768 return system_setting_setter(key, value);
774 int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
776 LOGE("Enter [%s]", __FUNCTION__);
777 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
778 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
782 system_setting_h system_setting_item;
783 system_setting_add_value_cb system_setting_adder;
785 int ret = system_settings_get_item(key, &system_setting_item);
788 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
789 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
794 if (system_setting_item->data_type != data_type) {
795 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
796 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
799 system_setting_adder = system_setting_item->add_value_cb;
801 if (system_setting_adder == NULL) {
802 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
803 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
806 return system_setting_adder(key, value);
810 int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
812 LOGE("Enter [%s]", __FUNCTION__);
813 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
814 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
818 system_setting_h system_setting_item;
819 system_setting_del_value_cb system_setting_deler;
821 int ret = system_settings_get_item(key, &system_setting_item);
824 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
825 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
829 if (system_setting_item->data_type != data_type) {
830 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
831 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
834 system_setting_deler = system_setting_item->del_value_cb;
836 if (system_setting_deler == NULL) {
837 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
838 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
841 return system_setting_deler(key, value);
848 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)
850 LOGE("Enter [%s]", __FUNCTION__);
851 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
852 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
856 system_setting_h system_setting_item;
857 system_setting_list_value_cb system_setting_lister;
859 int ret = system_settings_get_item(key, &system_setting_item);
862 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
863 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
868 if (system_setting_item->data_type != data_type) {
869 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
870 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
873 //system_setting_list_value_cb list_changed_cb;
874 system_setting_lister = system_setting_item->list_value_cb;
876 if (system_setting_lister == NULL) {
877 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
878 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
881 return system_setting_lister(key, system_setting_data_iterator, user_data);
889 /* LCOV_EXCL_START */
890 int system_settings_set_value_int(system_settings_key_e key, int value)
892 LOGE("Enter [%s]", __FUNCTION__);
893 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
894 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
899 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
903 int system_settings_get_value_int(system_settings_key_e key, int *value)
905 LOGE("Enter [%s]", __FUNCTION__);
906 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
907 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
910 int *ptr = &value_int;
913 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
918 /* LCOV_EXCL_START */
919 int system_settings_set_value_bool(system_settings_key_e key, bool value)
921 LOGE("Enter [%s]", __FUNCTION__);
922 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
923 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
927 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
931 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
933 LOGE("Enter [%s]", __FUNCTION__);
934 SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
935 signed long flag = 0;
939 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
940 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
943 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
944 SETTING_TRACE(" inf (flag) value : %ld ", flag);
947 SETTING_TRACE(" flag == 0 ");
948 } else if (flag == 1) {
950 SETTING_TRACE(" flag == 1 ");
953 SETTING_TRACE(" exception here!!! ");
959 /* LCOV_EXCL_START */
960 int system_settings_set_value_string(system_settings_key_e key, const char *value)
962 LOGE("Enter [%s]", __FUNCTION__);
963 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key))
964 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
966 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
967 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
969 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
973 int system_settings_get_value_string(system_settings_key_e key, char **value)
975 LOGE("Enter [%s]", __FUNCTION__);
976 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
977 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
980 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
985 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
987 LOGE("Enter [%s]", __FUNCTION__);
988 system_setting_h system_setting_item;
989 system_setting_set_changed_callback_cb system_setting_set_changed_cb;
991 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
992 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
995 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
996 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
998 int ret = system_settings_get_item(key, &system_setting_item);
1000 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1001 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1005 system_setting_set_changed_cb = system_setting_item->set_changed_cb;
1008 /* Store the callback function from application side */
1010 system_setting_item->changed_cb = callback;
1013 system_setting_item->user_data = user_data;
1015 if (system_setting_set_changed_cb == NULL) {
1016 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
1017 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
1020 return system_setting_set_changed_cb(key, callback, user_data);
1024 int system_settings_unset_changed_cb(system_settings_key_e key)
1026 LOGE("Enter [%s]", __FUNCTION__);
1027 system_setting_h system_setting_item;
1028 system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
1030 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1031 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1034 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
1035 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1037 int ret = system_settings_get_item(key, &system_setting_item);
1039 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1040 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1044 system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
1046 /* free the callback function from application side */
1047 if (system_setting_item->changed_cb)
1048 system_setting_item->changed_cb = NULL;
1049 /*----------------------------------------------------- */
1051 if (system_setting_unset_changed_cb == NULL) {
1052 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
1053 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
1056 return system_setting_unset_changed_cb(key);
1059 int system_settings_add_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
1061 LOGE("Enter [%s]", __FUNCTION__);
1062 char *vconf_string = NULL;
1063 system_setting_h system_setting_item;
1065 if (callback == NULL)
1066 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1068 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
1069 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1071 int ret = system_settings_get_item(key, &system_setting_item);
1073 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1074 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1078 system_settings_vconf_get_key_string(key, &vconf_string);
1079 LOGE("[%s] key = %d %s", __FUNCTION__, key, vconf_string ? vconf_string : "NULL");
1081 /* Store the callback function from application side */
1082 ret = add_multi_callback(&system_setting_item->changed_cb_list, callback, user_data);
1083 if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
1084 LOGE("[%s] IO_ERROR(0x%08x) : failed to add muti-callback for the system settings", __FUNCTION__, ret);
1088 if (!system_setting_item->changed_cb_list.is_registered) {
1089 int ret = system_setting_vconf_set_changed_multi_cb(vconf_string, key);
1090 if (ret == SYSTEM_SETTINGS_ERROR_NONE)
1091 system_setting_item->changed_cb_list.is_registered = 1;
1092 LOGE("Leave [%s]", __FUNCTION__);
1096 LOGE("Leave [%s]", __FUNCTION__);
1097 return SYSTEM_SETTINGS_ERROR_NONE;
1100 int system_settings_remove_changed_cb(system_settings_key_e key, system_settings_changed_cb callback)
1102 LOGE("Enter [%s]", __FUNCTION__);
1103 char *vconf_string = NULL;
1104 system_setting_h system_setting_item;
1106 if (callback == NULL) {
1107 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1110 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) {
1111 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1114 int ret = system_settings_get_item(key, &system_setting_item);
1116 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1117 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1121 delete_multi_callback(&system_setting_item->changed_cb_list, callback);
1123 if (system_setting_item->changed_cb_list.list == NULL) {
1125 system_settings_vconf_get_key_string(key, &vconf_string);
1126 if (vconf_string == NULL)
1127 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1128 ret = system_setting_vconf_unset_changed_multi_cb(vconf_string, key);
1129 if (ret == SYSTEM_SETTINGS_ERROR_NONE)
1130 system_setting_item->changed_cb_list.is_registered = 0;
1131 LOGE("Leave [%s]", __FUNCTION__);
1135 LOGE("Leave [%s]", __FUNCTION__);
1136 return SYSTEM_SETTINGS_ERROR_NONE;
1139 //////////////////////////////////////////////////////////////////////////////////////////////////
1141 //////////////////////////////////////////////////////////////////////////////////////////////////
1143 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
1145 LOGE("Enter [%s]", __FUNCTION__);
1146 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1147 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1150 return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
1153 //////////////////////////////////////////////////////////////////////////////////////////////////
1155 //////////////////////////////////////////////////////////////////////////////////////////////////
1157 int system_settings_add_value_string(system_settings_key_e key, const char* value)
1159 LOGE("Enter [%s]", __FUNCTION__);
1160 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1161 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1164 return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
1167 //////////////////////////////////////////////////////////////////////////////////////////////////
1169 //////////////////////////////////////////////////////////////////////////////////////////////////
1171 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
1173 LOGE("Enter [%s]", __FUNCTION__);
1174 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1175 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1178 return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);