Initialize data usage limit from vconf key 88/192888/2 accepted/tizen/4.0/unified/20181112.120741 submit/tizen_4.0/20181112.093110
authorhyunuktak <hyunuk.tak@samsung.com>
Mon, 12 Nov 2018 09:28:48 +0000 (18:28 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Mon, 12 Nov 2018 09:29:07 +0000 (18:29 +0900)
Change-Id: I45c66035b1c21e75d14f7b227e4be42553ff39f6
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
src/monitor/stc-monitor.c

index a6eff3a..b504b8e 100755 (executable)
 #define VCONFKEY_STC_BACKGROUND_STATE "db/stc/background_state"
 #endif
 
+#ifndef VCONFKEY_SETAPPL_DATA_LIMIT_INT
+#define VCONFKEY_SETAPPL_DATA_LIMIT_INT "db/setting/data_limit"
+#endif
+
+#ifndef VCONFKEY_SETAPPL_SET_DATA_USAGE_LIMIT_BOOL
+#define VCONFKEY_SETAPPL_SET_DATA_USAGE_LIMIT_BOOL "db/setting/set_data_usage_limit"
+#endif
+
 #ifndef VCONFKEY_SETAPPL_DATA_RESTRICTION_INT
 #define VCONFKEY_SETAPPL_DATA_RESTRICTION_INT "db/setting/data_restriction"
 #endif
@@ -67,6 +75,19 @@ typedef struct {
 static stc_system_s *g_system = NULL;
 
 //LCOV_EXCL_START
+static int __vconf_get_bool(const char *key, int *value)
+{
+       int ret = 0;
+
+       ret = vconf_get_bool(key, value);
+       if (ret != VCONF_OK) {
+               STC_LOGE("Failed to get vconfkey [%s] value", key); //LCOV_EXCL_LINE
+               return -1; //LCOV_EXCL_LINE
+       }
+
+       return 0;
+}
+
 static int __vconf_get_int(const char *key, int *value)
 {
        int ret = 0;
@@ -1852,6 +1873,39 @@ static void __fill_exceptions_list(void)
        stc_plugin_fill_exception_list();
 }
 
+static void __init_data_usage_limit(void)
+{
+       int limit_state = FALSE;
+
+       if (__vconf_get_bool(VCONFKEY_SETAPPL_SET_DATA_USAGE_LIMIT_BOOL, &limit_state))
+               return;
+
+       STC_LOGI("Data usage limit state [%d]", limit_state);
+
+       if (limit_state == TRUE) {
+               int limit_value = 0;
+               if (__vconf_get_int(VCONFKEY_SETAPPL_DATA_LIMIT_INT, &limit_value))
+                       return;
+
+               STC_LOGI("Data uage limit value [%d]", limit_value);
+
+               if (limit_value) {
+                       table_restrictions_info rule;
+
+                       memset(&rule, 0, sizeof(table_restrictions_info));
+                       rule.app_id = STC_TOTAL_DATACALL;
+                       rule.rst_state = STC_RESTRICTION_REMOVED;
+                       rule.data_limit = limit_value;
+                       rule.data_warn_limit = limit_value;
+                       rule.roaming = STC_ROAMING_DISABLE;
+                       rule.subscriber_id = NULL;
+
+                       table_restrictions_update(&rule);
+                       stc_monitor_rstns_tree_add(&rule);
+               }
+       }
+}
+
 stc_error_e stc_monitor_init(void)
 {
        stc_system_s *system = MALLOC0(stc_system_s, 1);
@@ -1913,6 +1967,8 @@ stc_error_e stc_monitor_init(void)
        __vconf_get_int(VCONFKEY_STC_BACKGROUND_STATE,
                        (int *)&g_system->background_state);
 
+       __init_data_usage_limit();
+
        __fill_exceptions_list();
        __fill_restritions_list();