Fix the vconfkey related with TV out
[platform/core/api/runtime-info.git] / src / runtime_info_system.c
index 90b31fd..74f0ffe 100644 (file)
 #include <runtime_info.h>
 #include <runtime_info_private.h>
 
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-
-#define LOG_TAG "CAPI_SYSTEM_RUNTIME_INFO"
-
-static const char *VCONF_FLIGHT_MODE = VCONFKEY_TELEPHONY_FLIGHT_MODE;
 static const char *VCONF_AUDIO_JACK = VCONFKEY_SYSMAN_EARJACK;
-static const char *VCONF_SOUND_ENABLED = VCONFKEY_SETAPPL_SOUND_STATUS_BOOL;
 static const char *VCONF_VIBRATION_ENABLED = VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL;
 static const char *VCONF_ROTATION_LOCK_ENABLED = VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL;
 static const char *VCONF_BATTERY_CHARGING = VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW;
-static const char *VCONF_TVOUT_CONNECTED = VCONFKEY_SYSMAN_EARJACK;
+static const char *VCONF_TVOUT_CONNECTED = VCONFKEY_SYSMAN_HDMI;
 static const char *VCONF_AUDIO_JACK_STATUS = VCONFKEY_SYSMAN_EARJACK;
-static const char *VCONF_SLIDING_KEYBOARD_STATUS = VCONFKEY_SYSMAN_SLIDING_KEYBOARD;
 static const char *VCONF_USB_CONNECTED = VCONFKEY_SYSMAN_USB_STATUS;
 static const char *VCONF_CHARGER_CONNECTED = VCONFKEY_SYSMAN_CHARGER_STATUS;
 
 
-int runtime_info_flightmode_get_value(runtime_info_value_h value)
-{
-       int vconf_value;
-
-       if (runtime_info_vconf_get_value_bool(VCONF_FLIGHT_MODE, &vconf_value))
-               vconf_value = 0;
-
-       value->b = (bool)vconf_value;
-
-       return RUNTIME_INFO_ERROR_NONE;
-}
-
-int runtime_info_flightmode_set_event_cb(void)
-{
-       return runtime_info_vconf_set_event_cb(VCONF_FLIGHT_MODE, RUNTIME_INFO_KEY_FLIGHT_MODE_ENABLED, 0);
-}
-
-void runtime_info_flightmode_unset_event_cb(void)
-{
-       runtime_info_vconf_unset_event_cb(VCONF_FLIGHT_MODE, 0);
-}
-
 int runtime_info_audiojack_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_AUDIO_JACK, &vconf_value))
-               vconf_value = VCONFKEY_SYSMAN_EARJACK_REMOVED;
+       ret = runtime_info_vconf_get_value_int(VCONF_AUDIO_JACK, &vconf_value);
+       if (ret != RUNTIME_INFO_ERROR_NONE)
+               return ret;
 
        switch (vconf_value) {
        case VCONFKEY_SYSMAN_EARJACK_3WIRE:
@@ -83,7 +54,7 @@ int runtime_info_audiojack_get_value(runtime_info_value_h value)
                break;
        }
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_audiojack_set_event_cb(void)
@@ -96,55 +67,16 @@ void runtime_info_audiojack_unset_event_cb(void)
        runtime_info_vconf_unset_event_cb(VCONF_AUDIO_JACK, 0);
 }
 
-int runtime_info_silent_mode_get_value(runtime_info_value_h value)
-{
-       int sound, vib;
-
-       if (runtime_info_vconf_get_value_bool(VCONF_SOUND_ENABLED, &sound))
-               return RUNTIME_INFO_ERROR_IO_ERROR;
-
-       if (runtime_info_vconf_get_value_bool(VCONF_VIBRATION_ENABLED, &vib))
-               return RUNTIME_INFO_ERROR_IO_ERROR;
-
-       if (sound == 0 && vib == 0)
-               value->b = true;
-       else
-               value->b = false;
-
-       return RUNTIME_INFO_ERROR_NONE;
-}
-
-int runtime_info_silent_mode_set_event_cb(void)
-{
-       int ret;
-
-       ret = runtime_info_vconf_set_event_cb(VCONF_SOUND_ENABLED, RUNTIME_INFO_KEY_SILENT_MODE_ENABLED, 0);
-       if (ret != RUNTIME_INFO_ERROR_NONE)
-               return ret;
-
-       ret = runtime_info_vconf_set_event_cb(VCONF_VIBRATION_ENABLED, RUNTIME_INFO_KEY_SILENT_MODE_ENABLED, 1);
-       if (ret != RUNTIME_INFO_ERROR_NONE)
-               runtime_info_vconf_unset_event_cb(VCONF_SOUND_ENABLED, 0);
-
-       return ret;
-}
-
-void runtime_info_silent_mode_unset_event_cb(void)
-{
-       runtime_info_vconf_unset_event_cb(VCONF_SOUND_ENABLED, 0);
-       runtime_info_vconf_unset_event_cb(VCONF_VIBRATION_ENABLED, 1);
-}
-
 int runtime_info_vibration_enabled_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_bool(VCONF_VIBRATION_ENABLED, &vconf_value))
-               vconf_value = 0;
-
-       value->b = (bool)vconf_value;
+       ret = runtime_info_vconf_get_value_bool(VCONF_VIBRATION_ENABLED, &vconf_value);
+       if (ret == RUNTIME_INFO_ERROR_NONE)
+               value->b = (bool)vconf_value;
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_vibration_enabled_set_event_cb(void)
@@ -160,13 +92,13 @@ void runtime_info_vibration_enabled_unset_event_cb(void)
 int runtime_info_auto_rotation_enabled_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_bool(VCONF_ROTATION_LOCK_ENABLED, &vconf_value))
-               vconf_value = 0;
-
-       value->b = (bool)vconf_value;
+       ret = runtime_info_vconf_get_value_bool(VCONF_ROTATION_LOCK_ENABLED, &vconf_value);
+       if (ret == RUNTIME_INFO_ERROR_NONE)
+               value->b = (bool)vconf_value;
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_auto_rotation_enabled_set_event_cb(void)
@@ -182,17 +114,13 @@ void runtime_info_auto_rotation_enabled_unset_event_cb(void)
 int runtime_info_battery_charging_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_BATTERY_CHARGING, &vconf_value))
-               return RUNTIME_INFO_ERROR_IO_ERROR;
-
-       /* regard not supported as disconnected */
-       if (vconf_value == -ENOTSUP)
-               vconf_value = false;
-
-       value->b = vconf_value;
+       ret = runtime_info_vconf_get_value_int(VCONF_BATTERY_CHARGING, &vconf_value);
+       if (ret == RUNTIME_INFO_ERROR_NONE)
+               value->b = vconf_value;
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_battery_charging_set_event_cb(void)
@@ -209,40 +137,34 @@ void runtime_info_battery_charging_unset_event_cb(void)
 int runtime_info_tvout_connected_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_TVOUT_CONNECTED, &vconf_value))
-               vconf_value = VCONFKEY_SYSMAN_EARJACK_REMOVED;
-
-       switch (vconf_value) {
-       case VCONFKEY_SYSMAN_EARJACK_TVOUT:
-               value->b = true;
-               break;
+       ret = runtime_info_vconf_get_value_int(VCONF_TVOUT_CONNECTED, &vconf_value);
+       if (ret == RUNTIME_INFO_ERROR_NONE)
+               value->b = vconf_value;
 
-       default:
-               value->b = false;
-               break;
-       }
-
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_tvout_connected_set_event_cb(void)
 {
-       return runtime_info_vconf_set_event_cb(VCONF_TVOUT_CONNECTED, RUNTIME_INFO_KEY_TV_OUT_CONNECTED, 1);
+       return runtime_info_vconf_set_event_cb(VCONF_TVOUT_CONNECTED, RUNTIME_INFO_KEY_TV_OUT_CONNECTED, 0);
 }
 
 void runtime_info_tvout_connected_unset_event_cb(void)
 {
-       runtime_info_vconf_unset_event_cb(VCONF_TVOUT_CONNECTED, 1);
+       runtime_info_vconf_unset_event_cb(VCONF_TVOUT_CONNECTED, 0);
 }
 
 
 int runtime_info_audio_jack_status_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_AUDIO_JACK_STATUS, &vconf_value))
-               vconf_value = VCONFKEY_SYSMAN_EARJACK_REMOVED;
+       ret = runtime_info_vconf_get_value_int(VCONF_AUDIO_JACK_STATUS, &vconf_value);
+       if (ret != RUNTIME_INFO_ERROR_NONE)
+               return ret;
 
        switch (vconf_value) {
        case VCONFKEY_SYSMAN_EARJACK_3WIRE:
@@ -258,7 +180,7 @@ int runtime_info_audio_jack_status_get_value(runtime_info_value_h value)
                break;
        }
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_audio_jack_status_set_event_cb(void)
@@ -271,51 +193,14 @@ void runtime_info_audio_jack_status_unset_event_cb(void)
        runtime_info_vconf_unset_event_cb(VCONF_AUDIO_JACK_STATUS, 2);
 }
 
-
-int runtime_info_sliding_keyboard_opened_get_value(runtime_info_value_h value)
-{
-       int vconf_value;
-
-       if (runtime_info_vconf_get_value_int(VCONF_SLIDING_KEYBOARD_STATUS, &vconf_value))
-               vconf_value = VCONFKEY_SYSMAN_SLIDING_KEYBOARD_NOT_SUPPORTED;
-
-       switch (vconf_value) {
-       case VCONFKEY_SYSMAN_SLIDING_KEYBOARD_NOT_AVAILABE:
-               value->b = false;
-               break;
-
-       case VCONFKEY_SYSMAN_SLIDING_KEYBOAED_AVAILABLE:
-               value->b = true;
-               break;
-
-       case VCONFKEY_SYSMAN_SLIDING_KEYBOARD_NOT_SUPPORTED:
-               value->b = false;
-               break;
-
-       default:
-               return RUNTIME_INFO_ERROR_IO_ERROR;
-       }
-
-       return RUNTIME_INFO_ERROR_NONE;
-}
-
-int runtime_info_sliding_keyboard_opened_set_event_cb(void)
-{
-       return runtime_info_vconf_set_event_cb(VCONF_SLIDING_KEYBOARD_STATUS, RUNTIME_INFO_KEY_SLIDING_KEYBOARD_OPENED, 0);
-}
-
-void runtime_info_sliding_keyboard_opened_unset_event_cb(void)
-{
-       runtime_info_vconf_unset_event_cb(VCONF_SLIDING_KEYBOARD_STATUS, 0);
-}
-
-
 int runtime_info_usb_connected_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_USB_CONNECTED, &vconf_value))
-               vconf_value = VCONFKEY_SYSMAN_USB_DISCONNECTED;
+       ret = runtime_info_vconf_get_value_int(VCONF_USB_CONNECTED, &vconf_value);
+       if (ret != RUNTIME_INFO_ERROR_NONE)
+               return ret;
 
        switch (vconf_value) {
        case VCONFKEY_SYSMAN_USB_DISCONNECTED:
@@ -334,7 +219,7 @@ int runtime_info_usb_connected_get_value(runtime_info_value_h value)
                return RUNTIME_INFO_ERROR_IO_ERROR;
        }
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_usb_connected_set_event_cb(void)
@@ -350,14 +235,14 @@ void runtime_info_usb_connected_unset_event_cb(void)
 int runtime_info_charger_connected_get_value(runtime_info_value_h value)
 {
        int vconf_value;
+       int ret;
 
-       if (runtime_info_vconf_get_value_int(VCONF_CHARGER_CONNECTED, &vconf_value))
-               return RUNTIME_INFO_ERROR_IO_ERROR;
+       ret = runtime_info_vconf_get_value_int(VCONF_CHARGER_CONNECTED, &vconf_value);
+       if (ret != RUNTIME_INFO_ERROR_NONE)
+               return ret;
 
        switch (vconf_value) {
        case VCONFKEY_SYSMAN_CHARGER_DISCONNECTED:
-       /* regard not supported as disconnected */
-       case -ENOTSUP:
                value->b = false;
                break;
 
@@ -369,7 +254,7 @@ int runtime_info_charger_connected_get_value(runtime_info_value_h value)
                return RUNTIME_INFO_ERROR_IO_ERROR;
        }
 
-       return RUNTIME_INFO_ERROR_NONE;
+       return ret;
 }
 
 int runtime_info_charger_connected_set_event_cb(void)
@@ -382,27 +267,96 @@ void runtime_info_charger_connected_unset_event_cb(void)
        runtime_info_vconf_unset_event_cb(VCONF_CHARGER_CONNECTED, 0);
 }
 
-
-int runtime_info_vibration_level_haptic_feedback_get_value(runtime_info_value_h value)
+int runtime_info_get_frequency_cpufreq(int core_idx, char *type, int *cpu_freq)
 {
-       int vconf_value;
+       char path[256];
+       FILE *cpufreq_fp;
+       int result;
 
-       if (runtime_info_vconf_get_value_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, &vconf_value))
-               return RUNTIME_INFO_ERROR_IO_ERROR;
+       if (core_idx < 0)
+               return RUNTIME_INFO_ERROR_INVALID_PARAMETER;
+
+       if (!type || !cpu_freq)
+               return RUNTIME_INFO_ERROR_INVALID_PARAMETER;
+
+       snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_%s_freq",
+                       core_idx, type);
+       cpufreq_fp = fopen(path, "r");
 
-       value->i = vconf_value;
+       //LCOV_EXCL_START : fallback routine
+       if (cpufreq_fp == NULL) {
+               if (core_idx > 0) {
+                       _I("Fail to get the information about core%d. Get the core0's instead",
+                                       core_idx);
+                       snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu0/cpufreq/scaling_%s_freq",
+                                       type);
+                       cpufreq_fp = fopen(path, "r");
+               }
+
+               if (cpufreq_fp == NULL) {
+                       _E("IO_ERROR(0x%08x) : failed to open cpufreq file",
+                                       RUNTIME_INFO_ERROR_IO_ERROR);
+                       return RUNTIME_INFO_ERROR_IO_ERROR;
+               }
+       }
+       //LCOV_EXCL_STOP
 
+       if (!fscanf(cpufreq_fp, "%d", &result)) {
+               //LCOV_EXCL_START : system error
+               _E("IO_ERROR(0x%08x) : there is no information in the cpuinfo file",
+                               RUNTIME_INFO_ERROR_IO_ERROR);
+               fclose(cpufreq_fp);
+               return RUNTIME_INFO_ERROR_IO_ERROR;
+               //LCOV_EXCL_STOP
+       }
+
+       *cpu_freq = result / 1000;
+       fclose(cpufreq_fp);
        return RUNTIME_INFO_ERROR_NONE;
 }
 
-int runtime_info_vibration_level_haptic_feedback_set_event_cb(void)
+//LCOV_EXCL_START : fallback routine
+int runtime_info_get_frequency_cpuinfo(int core_idx, int *cpu_freq)
 {
-       return runtime_info_vconf_set_event_cb(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, RUNTIME_INFO_KEY_VIBRATION_LEVEL_HAPTIC_FEEDBACK, 0);
-}
+       FILE *cpuinfo_fp;
+       char line[128];
+       int cur_core = 0;
+       char *start;
+       int acc_freq;
 
-void runtime_info_vibration_level_haptic_feedback_unset_event_cb(void)
-{
-       runtime_info_vconf_unset_event_cb(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, 0);
-}
+       if (core_idx < 0)
+               return RUNTIME_INFO_ERROR_INVALID_PARAMETER;
+
+       if (!cpu_freq)
+               return RUNTIME_INFO_ERROR_INVALID_PARAMETER;
+
+       cpuinfo_fp = fopen("/proc/cpuinfo", "r");
+       if (cpuinfo_fp == NULL) {
+               _E("Fail to open cpuinfo");
+               return RUNTIME_INFO_ERROR_IO_ERROR;
+       }
 
+       while (fgets(line, sizeof(line), cpuinfo_fp) != NULL) {
+               if (strncmp(line, "cpu MHz", 7))
+                       continue;
+
+               if (cur_core == core_idx) {
+                       /* String format in the cpuinfo : "cpu MHz : 1234" */
+                       start = strchr(line, ':') + 2;
+                       acc_freq = 0;
+                       while (*start >= '0' && *start <= '9') {
+                               acc_freq = (acc_freq * 10) + (*start - '0');
+                               ++start;
+                       }
+
+                       *cpu_freq = acc_freq;
+                       fclose(cpuinfo_fp);
+                       return RUNTIME_INFO_ERROR_NONE;
+               }
+               ++cur_core;
+       }
 
+       fclose(cpuinfo_fp);
+       return RUNTIME_INFO_ERROR_NO_DATA;
+}
+//LCOV_EXCL_STOP