#include <app_control.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include <system_info.h>
#include <fcntl.h>
-#include <bluetooth.h>
-#include <wifi.h>
#include <app_manager.h>
#include <efl_extension.h>
#include <telephony.h>
#include <runtime_info.h>
#include "setting-about-main.h"
+#include "setting-about-status.h"
#define MAX_DEVICE_NAME_LEN 32
.cleanup = NULL
};
-/**
- * @brief get software version.
- *
- * @param szStr the buffer for store SW version
- * @param nSize buffer size
- */
-void setting_about_main_get_wifi_mac_address_string(char *str, int size)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(str == NULL, "str parameter is NULL");
- setting_retm_if(size < SETTING_ABOUT_WIFI_MAC_STR_LEN + 1,
- "size parameter is wrong");
-
- char *mac_addr = NULL;
- int status = wifi_get_mac_address(&mac_addr);
- if (WIFI_ERROR_NONE != status)
- SETTING_TRACE_ERROR("Failed to call wifi_get_mac_address()");
- else
- SETTING_TRACE_ERROR("Success to call wifi_get_mac_address()");
-
- if (mac_addr) {
- safeCopyStr(str, mac_addr, SETTING_ABOUT_WIFI_MAC_STR_LEN);
- SETTING_TRACE_DEBUG("get_wifi_mac_address : %s", mac_addr);
- free(mac_addr);
- }
-
- SETTING_TRACE_DEBUG("get_wifi_mac_address : %s", str);
-
- int state = 0;
- int ret = vconf_get_int(VCONFKEY_WIFI_STATE, &state);
- if (0 != ret)
- SETTING_TRACE_ERROR("Failed to get wifi state");
- else
- SETTING_TRACE("get wifi state: %d", state);
-
- if ((status != WIFI_ERROR_NONE) || (safeStrLen(str) == 0)
- || 0 == state) {
- snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- }
-}
-
-/**
- * @brief get bluetooth address.
- *
- * @param szStr the buffer for store bluetooth address
- * @param nSize buffer size
- */
-void setting_about_main_get_bluetooth_address_string(char *str, int size)
-{
- setting_retm_if(str == NULL, "str parameter is NULL");
-
- int ret = 0;
-
- ret = bt_initialize();
- setting_retm_if(ret != 0, "bluetooth initialization failed");
-
- char *local_address = NULL;
- ret = bt_adapter_get_address(&local_address);
-
- bt_adapter_state_e state;
- ret = bt_adapter_get_state(&state);
-
- bt_deinitialize();
-
- if (ret < 0 || BT_ADAPTER_DISABLED == state) {
- snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- SETTING_TRACE_DEBUG(
- "bt address : %s failed get bt address with error code:%d",
- str, ret);
- } else {
- SETTING_TRACE_DEBUG("bt address : %s", local_address);
- snprintf(str, size, "%s", local_address);
- }
-
- if (local_address)
- free(local_address);
-}
-
/**
* @brief popup response callback fuc.
*
}
/**
- * @brief get current battery percentage.
- *
- * @param szStr the buffer for store battery percentage
- * @param nSize buffer size
- */
-static void __setting_about_main_get_battery_string(char *str, int size)
-{
- setting_retm_if(str == NULL, "str parameter is NULL");
-
- int val = -1;
- char file[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
- snprintf(file, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO, "%s/%s/%s",
- SETTING_ABOUT_POWER_SUPPLY_PATH, "battery", "capacity");
-
- char buf[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
- int fd = 0;
- int r = 0;
-
- fd = open(file, O_RDONLY);
- if (fd != -1) {
- r = read(fd, buf, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
- if ((r >= 0) && (r < MAX_DISPLAY_STR_LEN_ON_PHONE_INFO)) {
- buf[r] = '\0';
- val = atoi(buf);
- snprintf(str, size, "%d%s", val, "\%");
- } else {
- SETTING_TRACE_ERROR("read file fail");
- snprintf(str, size, "%s",
- _("IDS_ST_HEADER_UNAVAILABLE"));
- }
-
- close(fd);
- } else {
- SETTING_TRACE_ERROR("open file fail");
- snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- }
-}
-
-/**
- * @brief get CPU usage.
+ * @brief get CPU info.
*
* @param szStr the buffer for store CPU info
* @param nSize buffer size
*/
static int __setting_about_main_stat_get_cpuinfo(char *szStr, int nSize)
{
- int lSize;
- FILE *cmd;
- char *result, *buffer, *tmp;
- cmd = popen("grep 'model name' /proc/cpuinfo | head -1 2>&1", "r");
- if (cmd == NULL) {
- SETTING_TRACE_ERROR("popen failed");
- snprintf(szStr, nSize, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- return -1;
- }
+ int ret = 0;
- lSize = MAX_DISPLAY_STR_LEN_ON_PHONE_INFO;
- buffer = (char *)malloc(sizeof(char)*lSize);
- if (buffer == NULL) {
- SETTING_TRACE_ERROR("malloc failed");
- snprintf(szStr, nSize, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- return -1;
- }
- result = fgets(buffer, lSize, cmd);
- if (result == NULL) {
- SETTING_TRACE_ERROR("Reading file failed");
+ char *cpu_name = NULL;
+ ret = system_info_get_platform_string(
+ "http://tizen.org/system/platform.processor", &cpu_name);
+
+ if (0 != ret) {
snprintf(szStr, nSize, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- FREE(buffer);
return -1;
}
- tmp = strstr(buffer,": ");
-
- snprintf(szStr, nSize, "%s", tmp + 2);
-
- pclose(cmd);
- FREE(buffer);
+ snprintf(szStr, nSize, "%s", cpu_name);
+ free(cpu_name);
return 0;
}
if (!safeStrCmp(vconf_name, VCONFKEY_WIFI_STATE)) {
SETTING_TRACE("status:%d", status);
char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
- setting_about_main_get_wifi_mac_address_string(str,
- sizeof(str));
+ //setting_about_main_get_wifi_mac_address_string(str,
+ //sizeof(str));
if (ad->item_data_wifi) {
G_FREE(ad->item_data_wifi->sub_desc);
ad->item_data_wifi->sub_desc = (char *)g_strdup(str);
} else if (!safeStrCmp(vconf_name, VCONFKEY_BT_STATUS)) {
SETTING_TRACE("status:%d", status);
char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
- setting_about_main_get_bluetooth_address_string(str,
- sizeof(str));
+ //setting_about_main_get_bluetooth_address_string(str,
+ // sizeof(str));
if (ad->item_data_bt) {
G_FREE(ad->item_data_bt->sub_desc);
ad->item_data_bt->sub_desc = (char *)g_strdup(str);
__setting_about_main_creat_name_view(data);
} else if (!safeStrCmp(ITEM_NAME_STATUS,
list_item->keyStr)) {
- //TODO: function to create status view
+ setting_view_create(&view_setting_about_status, (void *)data);
}
}
}
}
-/**
- * @brief callback run for timer task to update CPU, Battery info
- *
- * @param data application context
- *
- * @return FALSE for call it once and then destory the timer, TRUE for always
- * call it when the timer is reached.
- */
-
-static Eina_Bool __setting_about_main_timer_update_cb(void *data)
-{
- retv_if(data == NULL, TRUE);
- SettingAbout *ad = (SettingAbout *)data;
- char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
-
- if (ad->item_data_battery) {
- __setting_about_main_get_battery_string(str, sizeof(str));
- /*SETTING_TRACE("str:%s", str);*/
- ad->item_data_battery->sub_desc = (char *)g_strdup(str);
-
- elm_object_item_data_set(ad->item_data_battery->item,
- ad->item_data_battery);
- elm_genlist_item_update(ad->item_data_battery->item);
- }
- return TRUE;
-}
-
/**
* @brief create main view genlist items
*
SETTING_TRACE_ERROR("item_data is NULL");
}
- /* 4. [UI] CPU usage */
+ /* 4. [UI] CPU Info */
memset(str, 0x00, sizeof(str));
int ret = __setting_about_main_stat_get_cpuinfo(str, sizeof(str));
if (ret == -1) {
SETTING_TRACE_ERROR("call __stat_get_cpuinfo fail");
}
- ad->item_data_cpu = item_data = setting_create_Gendial_field_def(
+ item_data = setting_create_Gendial_field_def(
ad->md.genlist, &(ad->itc_2text_2), NULL,
NULL, SWALLOW_Type_INVALID, NULL,
NULL, 0, "CPU", str, NULL);
- if (ad->item_data_cpu) {
- elm_object_item_disabled_set(ad->item_data_cpu->item,
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item,
EINA_TRUE);
- elm_genlist_item_select_mode_set(ad->item_data_cpu->item,
+ elm_genlist_item_select_mode_set(item_data->item,
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- __BACK_POINTER_SET(ad->item_data_cpu);
+ __BACK_POINTER_SET(item_data);
} else {
SETTING_TRACE_ERROR("item_data is NULL");
}
"status, and other information.",
NULL);
-
- ad->update_timer = ecore_timer_add(1,
- __setting_about_main_timer_update_cb, ad);
-
-
return SETTING_RETURN_SUCCESS;
}
if (ret != 0)
SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
- ecore_timer_del(ad->update_timer);
- ad->update_timer = NULL;
-
ecore_idler_del(ad->update_idler);
ad->update_idler = NULL;
--- /dev/null
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/statvfs.h>
+#include <fcntl.h>
+#include <telephony.h>
+#include <bluetooth.h>
+#include <wifi.h>
+
+#include "setting-about.h"
+#include "setting-about-main.h"
+
+static int _view_create(void *cb);
+static int _view_destroy(void *cb);
+
+static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it);
+static Eina_Bool __setting_about_status_timer_update_cb(void *data);
+
+static int __setting_about_status_generate_genlist(void *data);
+static void __setting_about_status_get_phone_number(
+ telephony_handle_list_s *list, char *str, int size);
+static int __setting_about_status_get_imei(
+ telephony_handle_list_s *list, char *str, int size);
+static void __setting_about_status_get_bluetooth_address(char *str, int size);
+static void __setting_about_status_get_wifi_mac_address(char *str, int size);
+static void __setting_about_status_get_serial_number(char *str, int size);
+static void __setting_about_status_get_storage_capacity(char *str, int size);
+static void __setting_about_status_get_battery_percent(char *str, int size);
+static int __setting_about_status_stat_get_cpuinfo(float *usr_pct, float *sys_pct);
+static void __setting_about_status_get_device_status(char *str, int size);
+static void __setting_about_status_get_security_status(char *str, int size);
+
+setting_view view_setting_about_status = {
+ .create = _view_create,
+ .destroy = _view_destroy,
+ .update = NULL,
+ .cleanup = NULL,
+};
+
+static int _view_create(void *cb)
+{
+ SETTING_TRACE_BEGIN;
+
+ /* variables initialization */
+ SettingAbout *ad = (SettingAbout *)cb;
+ retv_if(!ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ setting_create_genlist_and_push_to_naviframe(
+ _("IDS_ST_MBODY_DEVICE_STATUS"), NULL,
+ _naviframe_item_pop_cb, ad, &ad->status_gl,
+ ad->md.naviframe);
+
+ /* telephony_handle_list_s initialization*/
+ if (telephony_init(&ad->tel_h_list) != TELEPHONY_ERROR_NONE) {
+ SETTING_TRACE_ERROR("telephony_init failed");
+ ad->tel_h_list.count = 0;
+ }
+ __setting_about_status_generate_genlist(ad);
+ ad->update_timer = ecore_timer_add(1,
+ __setting_about_status_timer_update_cb, ad);
+
+ view_setting_about_status.is_create = 1;
+ return SETTING_RETURN_SUCCESS;
+}
+
+static int _view_destroy(void *cb)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAbout *ad = (SettingAbout *)cb;
+ retv_if(!ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ if (telephony_deinit(&ad->tel_h_list) != TELEPHONY_ERROR_NONE)
+ SETTING_TRACE_ERROR("telephony_deinit failed");
+
+ ecore_timer_del(ad->update_timer);
+ ad->update_timer = NULL;
+
+ if (!view_setting_about_status.is_create)
+ return SETTING_RETURN_SUCCESS;
+
+ view_setting_about_status.is_create = 0;
+ return SETTING_RETURN_SUCCESS;
+}
+
+static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAbout *ad = (SettingAbout *)data;
+ retv_if(!ad, EINA_FALSE);
+ setting_view_destroy(&view_setting_about_status, ad);
+ return EINA_TRUE;
+}
+
+/**
+ * @brief callback run for timer task to update CPU, Battery info
+ *
+ * @param data application context
+ *
+ * @return FALSE for call it once and then destory the timer, TRUE for always
+ * call it when the timer is reached.
+ */
+
+static Eina_Bool __setting_about_status_timer_update_cb(void *data)
+{
+ retv_if(data == NULL, TRUE);
+ SettingAbout *ad = (SettingAbout *)data;
+ char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
+
+ if (ad->item_data_cpu) {
+ float usr, sys;
+ int ret = __setting_about_status_stat_get_cpuinfo(&usr, &sys);
+ if (ret == -ENOENT) {
+ SETTING_TRACE_ERROR("call __stat_get_cpuinfo fail");
+ snprintf(str, sizeof(str), "%s",
+ _("IDS_ST_HEADER_UNAVAILABLE"));
+ } else {
+ snprintf(str, sizeof(str), "%.0f%s", usr + sys, "\%");
+ }
+ ad->item_data_cpu->sub_desc = (char *)g_strdup(str);
+ elm_object_item_data_set(ad->item_data_cpu->item,
+ ad->item_data_cpu);
+ elm_genlist_item_update(ad->item_data_cpu->item);
+ }
+
+ if (ad->item_data_battery) {
+ __setting_about_status_get_battery_percent(str, sizeof(str));
+ /*SETTING_TRACE("str:%s", str);*/
+ ad->item_data_battery->sub_desc = (char *)g_strdup(str);
+
+ elm_object_item_data_set(ad->item_data_battery->item,
+ ad->item_data_battery);
+ elm_genlist_item_update(ad->item_data_battery->item);
+ }
+ return TRUE;
+}
+
+static int __setting_about_status_generate_genlist(void *data)
+{
+ SettingAbout *ad = (SettingAbout *)data;
+ retv_if(!ad, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ Setting_GenGroupItem_Data *item_data = NULL;
+ char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
+
+ /* [UI] Phone Number */
+ memset(str, 0, sizeof(str));
+ __setting_about_status_get_phone_number(&ad->tel_h_list, str,
+ sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_PHONE_NUMBER"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] IMEI */
+ memset(str, 0x00, sizeof(str));
+ int ret = __setting_about_status_get_imei(&ad->tel_h_list, str, sizeof(str));
+ if (ret == -1) {
+ SETTING_TRACE_ERROR("call __stat_get_cpuinfo fail");
+ }
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_IMEI"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Bluetooth address */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_bluetooth_address(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_MBODY_BLUETOOTH_ADDRESS"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Wi-Fi MAC address */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_wifi_mac_address(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_WI_FI_MAC_ADDRESS"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Serial number */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_serial_number(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_SERIAL_NUMBER"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Storage */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_storage_capacity(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_STORAGE"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Battery power */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_battery_percent(str, sizeof(str));
+ ad->item_data_battery = item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_BATTERY_PERCENTAGE_ABB"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+
+ /* [UI] CPU usage */
+ memset(str, 0, sizeof(str));
+ float usr, sys;
+ ret = __setting_about_status_stat_get_cpuinfo(&usr, &sys);
+ if (ret == -ENOENT) {
+ SETTING_TRACE_ERROR("call __stat_get_cpuinfo fail");
+ snprintf(str, sizeof(str), "%s",
+ _("IDS_ST_HEADER_UNAVAILABLE"));
+ } else {
+ snprintf(str, sizeof(str), "%.0f%s", usr + sys, "\%");
+ }
+ ad->item_data_cpu = item_data = setting_create_Gendial_field_def(
+ ad->status_gl, &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_BODY_CPU_USAGE"), str, NULL);
+ if (ad->item_data_cpu) {
+ elm_object_item_disabled_set(ad->item_data_cpu->item,
+ EINA_TRUE);
+ elm_genlist_item_select_mode_set(ad->item_data_cpu->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ __BACK_POINTER_SET(ad->item_data_cpu);
+ }
+
+ /* [UI] Device status */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_device_status(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_MBODY_DEVICE_STATUS"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ /* [UI] Security status */
+ memset(str, 0x00, sizeof(str));
+ __setting_about_status_get_security_status(str, sizeof(str));
+ item_data = setting_create_Gendial_field_def(
+ ad->status_gl,
+ &(ad->itc_2text_2), NULL,
+ NULL, SWALLOW_Type_INVALID, NULL,
+ NULL, 0, _("IDS_ST_TMBODY_SECURITY_STATUS"), str, NULL);
+ if (item_data) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_genlist_item_select_mode_set(item_data->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ return SETTING_RETURN_SUCCESS;
+}
+
+static void __setting_about_status_get_phone_number(
+ telephony_handle_list_s *list, char *str, int size)
+{
+ char *phone_num = NULL;
+ int ret = 0;
+ if (list && list->count > 0) {
+ ret = telephony_sim_get_subscriber_number(list->handle[0],
+ &phone_num);
+ SETTING_TRACE_DEBUG(
+ "telephony_sim_get_subscriber_number %s %s",
+ phone_num, get_error_message(ret));
+ if (!ret) {
+ snprintf(str, size, "%s", phone_num);
+ free(phone_num);
+ return;
+ }
+ }
+
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+}
+
+static int __setting_about_status_get_imei(telephony_handle_list_s *list, char *str, int size)
+{
+ if (!list) {
+ SETTING_TRACE_ERROR("list is null");
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ return -1;
+ }
+ char *buffer = (char *)malloc(sizeof(char)*size);
+ if (buffer == NULL) {
+ SETTING_TRACE_ERROR("malloc failed");
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ return -1;
+ }
+ telephony_modem_get_imei(list->handle[0], &buffer);
+
+ snprintf(str, size, "%s", buffer);
+
+ FREE(buffer);
+
+ return 0;
+}
+
+/**
+ * @brief get bluetooth address.
+ *
+ * @param str the buffer for store bluetooth address
+ * @param size buffer size
+ */
+static void __setting_about_status_get_bluetooth_address(char *str, int size)
+{
+ setting_retm_if(str == NULL, "str parameter is NULL");
+
+ int ret = 0;
+
+ ret = bt_initialize();
+ setting_retm_if(ret != 0, "bluetooth initialization failed");
+
+ char *local_address = NULL;
+ ret = bt_adapter_get_address(&local_address);
+
+ bt_adapter_state_e state;
+ ret = bt_adapter_get_state(&state);
+
+ bt_deinitialize();
+
+ if (ret < 0 || BT_ADAPTER_DISABLED == state) {
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ SETTING_TRACE_DEBUG(
+ "bt address : %s failed get bt address with error code:%d",
+ str, ret);
+ } else {
+ SETTING_TRACE_DEBUG("bt address : %s", local_address);
+ snprintf(str, size, "%s", local_address);
+ }
+
+ free(local_address);
+}
+
+static void __setting_about_status_get_wifi_mac_address(char *str, int size)
+{
+ setting_retm_if(str == NULL, "str parameter is NULL");
+ setting_retm_if(size < SETTING_ABOUT_WIFI_MAC_STR_LEN + 1,
+ "size parameter is wrong");
+
+ char *mac_addr = NULL;
+ int status = wifi_get_mac_address(&mac_addr);
+ if (WIFI_ERROR_NONE != status)
+ SETTING_TRACE_ERROR("Failed to call wifi_get_mac_address()");
+ else
+ SETTING_TRACE_ERROR("Success to call wifi_get_mac_address()");
+
+ if (mac_addr) {
+ safeCopyStr(str, mac_addr, SETTING_ABOUT_WIFI_MAC_STR_LEN);
+ SETTING_TRACE_DEBUG("get_wifi_mac_address : %s", mac_addr);
+ free(mac_addr);
+ }
+
+ SETTING_TRACE_DEBUG("get_wifi_mac_address : %s", str);
+
+ int state = 0;
+ int ret = vconf_get_int(VCONFKEY_WIFI_STATE, &state);
+ if (0 != ret)
+ SETTING_TRACE_ERROR("Failed to get wifi state");
+ else
+ SETTING_TRACE("get wifi state: %d", state);
+
+ if ((status != WIFI_ERROR_NONE) || (safeStrLen(str) == 0)
+ || 0 == state) {
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ }
+}
+
+static void __setting_about_status_get_serial_number(char *str, int size)
+{
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+}
+
+static void __setting_about_status_get_storage_capacity(char *str, int size)
+{
+ long long int total = 0;
+ long long int avail = 0;
+ struct statvfs internal;
+ struct statvfs external;
+
+ if (storage_get_internal_memory_size(&internal) < 0) {
+ SETTING_TRACE_ERROR("Fail to get internal memory size");
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ return;
+ } else {
+ total = internal.f_frsize * internal.f_blocks;
+ avail = internal.f_bsize * internal.f_bavail;
+ SETTING_TRACE_DEBUG("Total mem : %lld, Avail mem : %lld",
+ total, avail);
+ }
+
+ if (storage_get_external_memory_size(&external) < 0) {
+ SETTING_TRACE_DEBUG("Fail to get external memory size");
+ } else {
+ total += external.f_frsize * external.f_blocks;
+ avail += external.f_bsize * external.f_bavail;
+ SETTING_TRACE_DEBUG("Total mem : %lld, Avail mem : %lld",
+ total, avail);
+ }
+
+ snprintf(str, size, "%0.1fGB available (Total %0.1fGB)",
+ (double)(avail / 1000000000.0), (double)(total / 1000000000.0));
+}
+
+/**
+ * @brief get current battery percentage.
+ *
+ * @param str the buffer for store battery percentage
+ * @param size buffer size
+ */
+static void __setting_about_status_get_battery_percent(char *str, int size)
+{
+ setting_retm_if(str == NULL, "str parameter is NULL");
+
+ int val = -1;
+ char file[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
+ snprintf(file, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO, "%s/%s/%s",
+ SETTING_ABOUT_POWER_SUPPLY_PATH, "battery", "capacity");
+
+ char buf[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
+ int fd = 0;
+ int r = 0;
+
+ fd = open(file, O_RDONLY);
+ if (fd != -1) {
+ r = read(fd, buf, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+ if ((r >= 0) && (r < MAX_DISPLAY_STR_LEN_ON_PHONE_INFO)) {
+ buf[r] = '\0';
+ val = atoi(buf);
+ snprintf(str, size, "%d%s", val, "\%");
+ } else {
+ SETTING_TRACE_ERROR("read file fail");
+ snprintf(str, size, "%s",
+ _("IDS_ST_HEADER_UNAVAILABLE"));
+ }
+
+ close(fd);
+ } else {
+ SETTING_TRACE_ERROR("open file fail");
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+ }
+}
+
+/**
+ * @brief get CPU usage.
+ *
+ * @param szStr the buffer for store CPU usage
+ * @param nSize buffer size
+ *
+ * @return -ENOENT means failed to get CPU info, otherwise ok.
+ */
+static int __setting_about_status_stat_get_cpuinfo(float *usr_pct, float *sys_pct)
+{
+ setting_retvm_if(usr_pct == NULL, -ENOENT, "param usr_pct is null");
+ setting_retvm_if(sys_pct == NULL, -ENOENT, "param sys_pct is null");
+
+ /* default value */
+ *usr_pct = 0.0;
+ *sys_pct = 0.0;
+ static unsigned long long usr_time = 0, /*nice_time = 0,*/sys_time = 0;
+ static unsigned long long old_usr = 0, /*old_nice = 0,*/old_sys = 0;
+ static struct timeval old_tv, cur_tv;
+ unsigned long long elapsed_tick;
+ long tick_per_sec;
+ long cpu_num;
+ FILE *fp = NULL;
+ int ret = 0;
+
+ tick_per_sec = sysconf(_SC_CLK_TCK);
+ cpu_num = sysconf(_SC_NPROCESSORS_ONLN);
+
+ if (cpu_num < 1)
+ cpu_num = 1;
+
+ gettimeofday(&cur_tv, NULL);
+ fp = fopen(SETTING_ABOUT_STAT_PATH, "r");
+ if (fp == NULL) {
+ SETTING_TRACE_ERROR("fp == NULL");
+ return -ENOENT;
+ }
+
+ char cpu_info[MAX_COMMON_BUFFER_LEN] = { 0, };
+ char *cpu_info_p = fgets(cpu_info, MAX_COMMON_BUFFER_LEN, fp);
+
+ if (cpu_info_p == NULL) {
+ SETTING_TRACE_ERROR("fgets failed");
+ fclose(fp); /* free - code */
+ return -ENOENT;
+ }
+
+ char *substr = NULL;
+ unsigned long long tmp_long = 0;
+ int i = 0;
+ /* split cpu_info, get 3 numbers headmost*/
+ while ((substr = strsep(&cpu_info_p, " \t")) != NULL) {
+ char *endptr = NULL;
+ tmp_long = strtoull(substr, &endptr, 10);
+ if (tmp_long != 0 && tmp_long != ULLONG_MAX) {
+ switch (i) {
+ case 0:
+ usr_time = tmp_long;
+ break;
+ case 1:
+ /*nice_time = tmp_long;*/
+ break;
+ case 2:
+ sys_time = tmp_long;
+ break;
+ default:
+ break;
+ }
+ i++;
+ }
+ if (i >= 3)
+ break;
+ }
+
+ fclose(fp);
+ fp = NULL;
+ if (old_usr == 0) {
+ ret = -EAGAIN;
+ SETTING_TRACE_ERROR("old_usr == 0");
+ goto out;
+ }
+
+ elapsed_tick = (unsigned long long)(((long long)cur_tv.tv_sec
+ - old_tv.tv_sec) * tick_per_sec
+ + (((long long)cur_tv.tv_usec - old_tv.tv_usec)
+ * tick_per_sec) / 1000000);
+
+ /* REMOVE BS */
+ if (elapsed_tick != 0) {
+ *usr_pct = ((float)(usr_time - old_usr) * 100 / elapsed_tick)
+ / cpu_num;
+ } else {
+ *usr_pct = 0;
+ }
+ /* REMOVE BS */
+ if (elapsed_tick != 0) {
+ *sys_pct = ((float)(sys_time - old_sys) * 100 / elapsed_tick)
+ / cpu_num;
+ } else {
+ *sys_pct = 0;
+ }
+
+out:
+ old_usr = usr_time;
+ /*old_nice = nice_time; */
+ old_sys = sys_time;
+ old_tv = cur_tv;
+
+ return ret;
+}
+
+static void __setting_about_status_get_device_status(char *str, int size)
+{
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+}
+
+static void __setting_about_status_get_security_status(char *str, int size)
+{
+ snprintf(str, size, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
+}