Add "report" command 18/208518/1
authorKiseok Chang <kiso.chang@samsung.com>
Tue, 25 Jun 2019 11:08:21 +0000 (20:08 +0900)
committerKiseok Chang <kiso.chang@samsung.com>
Tue, 25 Jun 2019 11:27:38 +0000 (20:27 +0900)
- report : template form -> report
- some menu are supported : about device, airplane mode, blutooth, wifi, sound

Change-Id: I28ebddce3aeb5f0096c469ff22406c494233ced3
Signed-off-by: Kiseok Chang <kiso.chang@samsung.com>
19 files changed:
src/CMakeLists.txt
src/common/GenSettingMenu.cpp
src/common/GenSettingMenu.h
src/common/SettingMenu.cpp
src/common/SettingMenu.h
src/report/sc_report.cpp [new file with mode: 0644]
src/report/sc_report.h [new file with mode: 0644]
src/sc_main.cpp
src/settings/sc_aboutdevice.cpp
src/settings/sc_airplane.cpp
src/settings/sc_bluetooth.cpp
src/settings/sc_datetime.cpp
src/settings/sc_display.cpp
src/settings/sc_sound.cpp
src/settings/sc_wifi.cpp
template/sc_tmolt_sound_status.txt [new file with mode: 0644]
template/sc_tmplt_aboutdevice.txt [new file with mode: 0644]
template/sc_tmplt_connections_status.txt [new file with mode: 0644]
template/sc_tmplt_display_status.txt [new file with mode: 0644]

index dec6467..6cc2631 100644 (file)
@@ -76,6 +76,7 @@ ADD_EXECUTABLE(${BIN_NAME}
        settings/sc_storage.cpp
        settings/sc_battery.cpp
        settings/sc_datausage.cpp
+       report/sc_report.cpp
        )
 
 # dmalloc
index 6e26027..ca26c1f 100644 (file)
@@ -3,8 +3,8 @@
 
 using namespace std;
 
-GenSettingMenu::GenSettingMenu(const char * optstr, const char * namestr, MenuFunc funcptr, MenuCreate precreateptr)
-       :strOpt(optstr), strName(namestr), ptrFunc(funcptr), ptrPrecreate(precreateptr)
+GenSettingMenu::GenSettingMenu(const char * optstr, const char * namestr, MenuFunc funcptr, MenuPreCreate precreateptr, MenuGetString getstringptr)
+       :strOpt(optstr), strName(namestr), ptrFunc(funcptr), ptrPrecreate(precreateptr), ptrGetString(getstringptr)
 {
 }
 
@@ -20,7 +20,7 @@ bool GenSettingMenu::create()
 
 MENURUN_ERROR GenSettingMenu::func(string &title, int argc, char *argv[])
 {
-       eprintf("func() of %s, %p, %p\n", name(), ptrFunc, ptrPrecreate);
+       eprintf("func() of %s, %p, %p, %p\n", name(), ptrFunc, ptrPrecreate, ptrGetString);
        if (ptrFunc) {
                printf("%s\n\n", title.c_str());
                return (*ptrFunc)(argc, argv, this);
@@ -28,6 +28,18 @@ MENURUN_ERROR GenSettingMenu::func(string &title, int argc, char *argv[])
 
        return MENURUN_ERR_NONE;
 }
+
+MENURUN_ERROR GenSettingMenu::getstring(string &resultstr, int argc, char *argv[])
+{
+       eprintf("getstring() of %s, %p, %p, %p\n", name(), ptrFunc, ptrPrecreate, ptrGetString);
+       if (ptrGetString) {
+               return (*ptrGetString)(resultstr, argc, argv, this);
+       }
+       
+       return SettingMenu::getstring(resultstr, argc, argv);
+}
+
+
 bool GenSettingMenu::isImplemented()
 {
        if (ptrFunc == nullptr && subMenus.empty()) return false;
@@ -44,14 +56,14 @@ const char *GenSettingMenu::name()
        return strName;
 }
 
-void GenSettingMenu::addSubmenu(const char * optstr, const char * namestr, MenuFunc funcptr, MenuCreate precreateptr)
+void GenSettingMenu::addSubmenu(const char * optstr, const char * namestr, MenuFunc funcptr, MenuPreCreate precreateptr, MenuGetString getstringptr)
 {
-       subMenus.push_back(new GenSettingMenu(optstr, namestr, funcptr, precreateptr));
+       subMenus.push_back(new GenSettingMenu(optstr, namestr, funcptr, precreateptr, getstringptr));
 }
 
 void GenSettingMenu::addSubmenu(MenuItem item)
 {
-       addSubmenu(item.optstr, item.namestr, item.funcptr, item.precreateptr);
+       addSubmenu(item.optstr, item.namestr, item.funcptr, item.precreateptr, item.getstringptr);
 }
 
 void GenSettingMenu::addSubmenus(MenuItem *items, int count)
index 0a79be4..81029c1 100644 (file)
@@ -3,36 +3,40 @@
 
 #include "SettingMenu.h"
 
+#include <string>
 #include <list>
 
 class GenSettingMenu;
 
 typedef  MENURUN_ERROR (*MenuFunc)(int argc, char *argv[], GenSettingMenu *menu);
-typedef  void (*MenuCreate)(GenSettingMenu  *menu);
+typedef  MENURUN_ERROR(*MenuGetString)(std::string &resultstr,int argc, char *argv[], GenSettingMenu *menu);
+typedef  void (*MenuPreCreate)(GenSettingMenu  *menu);
 
 typedef struct {
        const char *optstr;
        const char *namestr;
        MenuFunc funcptr;
-       MenuCreate precreateptr;
+       MenuPreCreate precreateptr;
+       MenuGetString getstringptr;
 } MenuItem;
 
 
 class GenSettingMenu : public SettingMenu
 {
 public:
-       GenSettingMenu(const char * optstr, const char * namestr, MenuFunc funcptr = nullptr, MenuCreate precreateptr = nullptr);
+       GenSettingMenu(const char * optstr, const char * namestr, MenuFunc funcptr = nullptr, MenuPreCreate precreateptr = nullptr, MenuGetString getstringptr = nullptr);
 
 public:
        bool create();
 
        MENURUN_ERROR func(std::string &title, int argc, char *argv[]);
+       MENURUN_ERROR getstring(std::string &resultstr, int argc, char *argv[]);
        bool isImplemented();
 
        const char *opt();
        const char *name();
 
-       void addSubmenu(const char * optstr, const char * namestr, MenuFunc funcptr = nullptr, MenuCreate precreateptr = nullptr);
+       void addSubmenu(const char * optstr, const char * namestr, MenuFunc funcptr = nullptr, MenuPreCreate precreateptr = nullptr, MenuGetString getstringptr = nullptr);
        void addSubmenu(MenuItem item);
        void addSubmenus(MenuItem *items, int count);
 
@@ -41,7 +45,8 @@ private:
        const char * strName;
 
        MenuFunc ptrFunc;
-       MenuCreate ptrPrecreate;
+       MenuPreCreate ptrPrecreate;
+       MenuGetString ptrGetString;
 };
 
 #endif //__GENSETTINGMENU_H_
index 7bf6599..0a9ce1b 100644 (file)
@@ -32,6 +32,19 @@ void SettingMenu::destroy()
        }
 }
 
+MENURUN_ERROR SettingMenu::func(string &title, int argc, char *argv[])
+{
+       eprintf("func() of %s\n", name());
+       return MENURUN_ERR_NONE;
+}
+
+MENURUN_ERROR SettingMenu::getstring(string &resultstr, int argc, char *argv[])
+{
+       eprintf("getstring() of %s\n", name());
+       resultstr = string("[N/A]");
+       return MENURUN_ERR_NONE;
+}
+
 MENURUN_ERROR SettingMenu::run(SettingCommand &settingcmds, string &title, int argc, char *argv[])
 {
        eprintf("run() of %s\n", name());
@@ -68,10 +81,37 @@ MENURUN_ERROR SettingMenu::run(SettingCommand &settingcmds, string &title, int a
        return result;
 }
 
-MENURUN_ERROR SettingMenu::func(string &title, int argc, char *argv[])
+MENURUN_ERROR SettingMenu::get(string &resultstr, SettingCommand &settingcmds, int argc, char *argv[])
 {
-       eprintf("func() of %s\n", name());
-       return MENURUN_ERR_NONE;
+       eprintf("get() of %s\n", name());
+
+       if (subMenus.empty()) {
+               MENURUN_ERROR result = getstring(resultstr, argc, argv);
+               if (result != MENURUN_ERR_NONE) return result;
+               return MENURUN_ERR_NONE;
+       }
+
+       if (!settingcmds.next()) {
+               return MENURUN_ERR_ARG_SHORT;
+       }
+       string curcmd = settingcmds.curCommand();
+       auto it = find_if(subMenus.begin(), subMenus.end(),
+               [=](SettingMenu *menu) -> bool {
+               if (!curcmd.compare(menu->opt())) return true;
+               return false;
+       }
+       );
+       if (it == subMenus.end()) {
+               eprintf("%s is not a valid command.\n\n", curcmd.c_str());
+               settingcmds.prev();
+               return MENURUN_ERR_ARG_INVAILD;
+       }
+
+       eprintf("command %s is founded.\n", curcmd.c_str());
+
+       MENURUN_ERROR result = ((*it)->get)(resultstr, settingcmds, argc, argv);
+       settingcmds.prev();
+       return result;
 }
 
 void SettingMenu::printUsage(SettingCommand &settingcmds)
@@ -94,22 +134,22 @@ void SettingMenu::printUsage(SettingCommand &settingcmds)
 
 void SettingMenu::printError(MENURUN_ERROR error)
 {
-       printf("[SettingMenu Error] ");
+       eprintf("[SettingMenu Error] ");
        switch (error) {
        case MENURUN_ERR_NORMAL:
-               printf("Normal error");
+               eprintf("Normal error");
                break;
        case MENURUN_ERR_ARG_SHORT:
-               printf("Lack of arguments");
+               eprintf("Lack of arguments");
                break;
        case MENURUN_ERR_ARG_INVAILD:
-               printf("Invalid argument");
+               eprintf("Invalid argument");
                break;
        case MENURUN_ERR_NOTIMPL:
-               printf("Not implemented");
+               eprintf("Not implemented");
                break;
        default:
                break;
        }
-       printf("\n");
+       eprintf("\n");
 }
index b2e1036..0140dc4 100644 (file)
@@ -24,8 +24,12 @@ public:
        virtual bool create();
        virtual void destroy();
 
-       virtual MENURUN_ERROR run(SettingCommand &settingcmds, std::string &title, int argc, char *argv[]);
        virtual MENURUN_ERROR func(std::string &title, int argc, char *argv[]);
+       virtual MENURUN_ERROR getstring(std::string &resultstr, int argc, char *argv[]);
+
+       virtual MENURUN_ERROR run(SettingCommand &settingcmds, std::string &title, int argc, char *argv[]);
+
+       virtual MENURUN_ERROR get(std::string &resultstr, SettingCommand &settingcmds, int argc, char *argv[]);
 
        virtual bool isImplemented() { return false; }
 
diff --git a/src/report/sc_report.cpp b/src/report/sc_report.cpp
new file mode 100644 (file)
index 0000000..e82557a
--- /dev/null
@@ -0,0 +1,129 @@
+#include "sc_report.h"
+
+#include <sc-debug.h>
+#include <stdio.h>
+
+#include <string>
+
+using namespace std;
+
+void MainMemu_Precreate(GenSettingMenu *menu);
+
+
+string getString(string& commandstr, GenSettingMenu *rootmenu, int argc, char *argv[])
+{
+       string title("report");
+       SettingCommand settingcommands(title, commandstr);
+
+       string resultstr;
+       MENURUN_ERROR result = rootmenu->get(resultstr, settingcommands, argc, argv);
+       if (result != MENURUN_ERR_NONE) {
+               resultstr = "[Failed]";
+//             SettingMenu::printError(result);
+       }
+       return resultstr;
+}
+
+
+bool isSeperator(char ch)
+{
+       if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\0')
+               return true;
+       return false;
+}
+
+MENURUN_ERROR getReportString(string &reportStr, const string &templateStr, int argc, char *argv[])
+{
+       GenSettingMenu mainMenu("setting-cmd", "Main Menu", nullptr, MainMemu_Precreate);
+
+       if (!mainMenu.create()) {
+               eprintf("Main Menu failed to create\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       const char *pstart = templateStr.c_str();
+       const char *pcur = pstart;
+       string newstring;
+       while (*pstart != '\0') {
+               if (*pcur == '@') {
+                       // make string() & append to newstring
+                       if (pstart + 1 < pcur) {
+                               string tempstr(pstart, (int)(pcur - pstart));
+                               newstring += tempstr;
+                       }
+                       pcur++;
+                       pstart = pcur;
+
+                       // find end of command and make command string
+                       while (!isSeperator(*pcur)) pcur++;
+                       string commandstr(pstart, (int)(pcur - pstart));
+                       pstart = pcur;
+
+                       string resultstr = getString(commandstr, &mainMenu, argc - 1, &argv[1]);
+                       newstring += resultstr;
+               }
+               else if (*pcur == '\0') {
+                       // make string() & append to newstring
+                       if (pstart + 1 < pcur) {
+                               string tempstr(pstart, (int)(pcur - pstart));
+                               newstring += tempstr;
+                       }
+                       pstart = pcur;
+               }
+               else {
+                       pcur++;
+               }
+       }
+       mainMenu.destroy();
+
+       reportStr = newstring;
+       return MENURUN_ERR_NONE;
+}
+
+
+#define MAX_TEMPLATEBUFFER     30000
+//char reportTemplate[MAX_TEMPLATEBUFFER] = "[About Device]\r\n\r\n   - Name : @ad/name\r\n   - Model: @ad/mn\r\n   - Tizen version: @ad/ver\n";
+char reportTemplate[MAX_TEMPLATEBUFFER];
+
+
+MENURUN_ERROR menufunc_report(int argc, char *argv[], GenSettingMenu *menu)
+{
+       if (argc < 1) {
+               eprintf("argc : %d\n", argc);
+               printf("Please give a path of file with report template\n   > setting-cmd report [ template file ]\n\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       FILE *pfile  = fopen(argv[0],"rb");
+       if (pfile == NULL) {
+               eprintf("fopen failed : %s !\n", argv[0]);
+               return MENURUN_ERR_NORMAL;
+       }
+       fseek(pfile, 0, SEEK_END);
+       int fsize = ftell(pfile);
+       fseek(pfile, 0, SEEK_SET);
+       
+       eprintf("fsize : %d\n", fsize);
+
+       int numread = fread(reportTemplate, sizeof(char), fsize, pfile);
+       if (numread != fsize) {
+               eprintf("numread != fsize : %d\n", numread);
+               fclose(pfile);
+               return MENURUN_ERR_NORMAL;
+       }
+       fclose(pfile);
+
+       printf("\n\n*************** Template Start *******************\n");
+       printf(reportTemplate);
+       printf("\n*************** Template End   *******************\n\n");
+
+       string reportString;
+       MENURUN_ERROR result = getReportString(reportString, reportTemplate, argc, argv);
+       if (result == MENURUN_ERR_NONE) {
+               printf("\n\n*************** Report Start *******************\n");
+               printf(reportString.c_str());
+               printf("\n*************** Report End   *******************\n\n");
+               return MENURUN_ERR_NONE;
+       }
+       return MENURUN_ERR_NORMAL;
+}
diff --git a/src/report/sc_report.h b/src/report/sc_report.h
new file mode 100644 (file)
index 0000000..88acc41
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __SC_REPORT_H_
+#define __SC_REPORT_H_
+
+#include <GenSettingMenu.h>
+
+MENURUN_ERROR menufunc_report(int argc, char *argv[], GenSettingMenu *menu);
+
+#endif         /* __SC_REPORT_H_ */
index 1d3b12f..83d3177 100644 (file)
@@ -13,6 +13,7 @@
 #include "settings/sc_storage.h"
 #include "settings/sc_datausage.h"
 #include "settings/sc_battery.h"
+#include "report/sc_report.h"
 
 #include <stdio.h>
 #include <string>
@@ -134,6 +135,8 @@ int main(int argc, char *argv[])
 {
        GenSettingMenu mainMenu("setting-cmd", "Main Menu", nullptr, MainMemu_Precreate);
 
+       mainMenu.addSubmenu("report", "Report", menufunc_report);
+
        if (!mainMenu.create()) {
                eprintf("Main Menu failed to create\n");
                return 0;
index 2915316..7287040 100644 (file)
@@ -26,6 +26,9 @@
 #include <sc-debug.h>
 
 
+using namespace std;
+
+
 #define SETTING_ABOUT_POWER_SUPPLY_PATH "/sys/class/power_supply"
 #define SETTING_ABOUT_STAT_PATH "/proc/stat"
 #define MAX_COMMON_BUFFER_LEN          1024
@@ -102,7 +105,7 @@ static void __get_sw_version(char *szStr, int nSize)
  *
  * @return -1 if getting CPU info fails, otherwise 0 is returned
  */
-static int __stat_get_cpuinfo(char *szStr, int nSize)
+static bool __stat_get_cpuinfo(char *szStr, int nSize)
 {
 
        int ret = 0;
@@ -113,12 +116,12 @@ static int __stat_get_cpuinfo(char *szStr, int nSize)
 
        if (0 != ret) {
                snprintf(szStr, nSize, "%s", "Unavailable");
-               return -1;
+               return false;
        }
 
        snprintf(szStr, nSize, "%s", cpu_name);
        free(cpu_name);
-       return 0;
+       return true;
 }
 /*---------------------------------------------------------------------------------------------------------------------------*/
 #define MAX_DISPLAY_STR_LEN_ON_PHONE_INFO      256
@@ -133,6 +136,15 @@ static MENURUN_ERROR menufunc_ad_name(int argc, char *argv[], GenSettingMenu *me
        return MENURUN_ERR_NONE;
 }
 
+static MENURUN_ERROR menugetstring_ad_name(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       char *name_value = vconf_get_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR);
+       resultstr = name_value;
+       free(name_value);
+
+       return MENURUN_ERR_NONE;
+};
+
 static MENURUN_ERROR menufunc_ad_mn(int argc, char *argv[], GenSettingMenu *menu)
 {
 
@@ -145,6 +157,16 @@ static MENURUN_ERROR menufunc_ad_mn(int argc, char *argv[], GenSettingMenu *menu
        return MENURUN_ERR_NONE;
 }
 
+static MENURUN_ERROR menugetstring_ad_mn(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       str[0] = '\0';
+       __get_phone_model_name(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
+
 static MENURUN_ERROR menufunc_ad_ver(int argc, char *argv[], GenSettingMenu *menu)
 {
 
@@ -157,9 +179,18 @@ static MENURUN_ERROR menufunc_ad_ver(int argc, char *argv[], GenSettingMenu *men
        return MENURUN_ERR_NONE;
 }
 
-static MENURUN_ERROR menufunc_ad_cpu(int argc, char *argv[], GenSettingMenu *menu)
+static MENURUN_ERROR menugetstring_ad_ver(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
 {
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       str[0] = '\0';
+       __get_sw_version(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
+static MENURUN_ERROR menufunc_ad_cpu(int argc, char *argv[], GenSettingMenu *menu)
+{
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
        str[0] = '\0';
        __stat_get_cpuinfo(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
@@ -169,204 +200,307 @@ static MENURUN_ERROR menufunc_ad_cpu(int argc, char *argv[], GenSettingMenu *men
        return MENURUN_ERR_NONE;
 }
 
-static MENURUN_ERROR menufunc_ad_ram(int argc, char *argv[], GenSettingMenu *menu)
+static MENURUN_ERROR menugetstring_ad_cpu(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
 {
-
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
        str[0] = '\0';
+       __stat_get_cpuinfo(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
+
+static MENURUN_ERROR menufunc_ad_ram(int argc, char *argv[], GenSettingMenu *menu)
+{
        runtime_memory_info_s mem_info = {0};
        int ret_value = runtime_info_get_system_memory_info(&mem_info);
+       if (RUNTIME_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       float ram_total_gb = mem_info.total / 1000000.0;
+       snprintf(str, sizeof(str), "%0.1fGB", ram_total_gb);
 
-       if (RUNTIME_INFO_ERROR_NONE == ret_value) {
-               float ram_total_gb = mem_info.total / 1000000.0;
-               snprintf(str, sizeof(str), "%0.1fGB", ram_total_gb);
-       }
        printf("\tRAM : ");
        printf("%s\n", str);
 
        return MENURUN_ERR_NONE;
 }
-
-static MENURUN_ERROR menufunc_ad_res(int argc, char *argv[], GenSettingMenu *menu)
+static MENURUN_ERROR menugetstring_ad_ram(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
 {
+       runtime_memory_info_s mem_info = { 0 };
+       int ret_value = runtime_info_get_system_memory_info(&mem_info);
+       if (RUNTIME_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
 
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
-       str[0] = '\0';
+       float ram_total_gb = mem_info.total / 1000000.0;
+       snprintf(str, sizeof(str), "%0.1fGB", ram_total_gb);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
+
+static MENURUN_ERROR menufunc_ad_res(int argc, char *argv[], GenSettingMenu *menu)
+{
        int dim1, dim2;
        int ret_value = system_info_get_platform_int(
-                                       "http://tizen.org/feature/screen.width",
-                                       &dim1);
-       if (SYSTEM_INFO_ERROR_NONE == ret_value) {
-               system_info_get_platform_int(
-                               "http://tizen.org/feature/screen.height",
-                               &dim2);
-               if (SYSTEM_INFO_ERROR_NONE == ret_value)
-                       snprintf(str, sizeof(str), "%d x %d", dim1, dim2);
-       }
+                                       "http://tizen.org/feature/screen.width", &dim1);
+       if (SYSTEM_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
+
+       system_info_get_platform_int(
+                       "http://tizen.org/feature/screen.height", &dim2);
+       if (SYSTEM_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%d x %d", dim1, dim2);
+
        printf("\tResolution : ");
        printf("%s\n", str);
 
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_res(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int dim1, dim2;
+       int ret_value = system_info_get_platform_int(
+               "http://tizen.org/feature/screen.width", &dim1);
+       if (SYSTEM_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
+
+       system_info_get_platform_int(
+               "http://tizen.org/feature/screen.height", &dim2);
+       if (SYSTEM_INFO_ERROR_NONE != ret_value)
+               return MENURUN_ERR_NORMAL;
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%d x %d", dim1, dim2);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
+
+
 /* sim_number is started from 1, ex) SIM1, SIM2, SIM3 ... */
-static MENURUN_ERROR _get_sim_phone_number(int sim_number, char * str, int str_size)
+static bool _get_sim_phone_number(int sim_number, char *str, int str_size)
 {
        telephony_handle_list_s tel_h_list;
        char *phone_num = nullptr;
        int ret = 0;
        if (telephony_init(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                eprintf("telephony_init failed");
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
        if ((int)tel_h_list.count < sim_number-1) {
                printf("\tThere is no SIM%d card\n", sim_number);
                if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                        eprintf("telephony_deinit failed");
-                       return MENURUN_ERR_NORMAL;
+                       return false;
                }
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
        ret = telephony_sim_get_subscriber_number(tel_h_list.handle[sim_number-1], &phone_num);
-       if (!ret && (phone_num != nullptr)) {
-               snprintf(str, str_size, "%s", phone_num);
-               free(phone_num);
-       } else {
+       if (ret != 0 || phone_num == nullptr) {
                printf("\tThere is no SIM%d card, ret:%d phone_num addr:0x%x\n", sim_number, ret, (unsigned int)phone_num);
                if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                        eprintf("telephony_deinit failed");
-                       return MENURUN_ERR_NORMAL;
+                       return false;
                }
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
-
+       snprintf(str, str_size, "%s", phone_num);
+       free(phone_num);
+       
        if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                eprintf("telephony_deinit failed");
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
-       return MENURUN_ERR_NONE;
+       return true;
 }
 
 
 static MENURUN_ERROR menufunc_ad_sim1(int argc, char *argv[], GenSettingMenu *menu)
 {
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
-       MENURUN_ERROR ret = _get_sim_phone_number(1, str, sizeof(str));
-       if (ret != MENURUN_ERR_NONE)
-               return ret;
+       if (!_get_sim_phone_number(1, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
        printf("\tSIM1 Phone Number : ");
        printf("%s\n", str);
 
-       return ret;
+       return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_sim1(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       if (!_get_sim_phone_number(1, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
 static MENURUN_ERROR menufunc_ad_sim2(int argc, char *argv[], GenSettingMenu *menu)
 {
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
-       MENURUN_ERROR ret = _get_sim_phone_number(2, str, sizeof(str));
-       if (ret != MENURUN_ERR_NONE)
-               return ret;
+       if (!_get_sim_phone_number(2, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
        printf("\tSIM2 Phone Number : ");
        printf("%s\n", str);
-       return ret;
+
+       return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_sim2(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       if (!_get_sim_phone_number(2, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
 /* sim_number is started from 1, ex) SIM1, SIM2, SIM3 ... */
-static MENURUN_ERROR _get_sim_ime(int sim_number, char * str, int str_size)
+static bool _get_sim_ime(int sim_number, char * str, int str_size)
 {
        telephony_handle_list_s tel_h_list;
        char *ime_buffer = nullptr;
 
        if (telephony_init(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                eprintf("telephony_init failed");
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
        if ((int)tel_h_list.count < sim_number-1) {
                printf("\tThere is no SIM%d card\n", sim_number);
                if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                        eprintf("telephony_deinit failed");
-                       return MENURUN_ERR_NORMAL;
+                       return false;
                }
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
        int ret = telephony_modem_get_imei(tel_h_list.handle[sim_number-1], &ime_buffer);
-       if (!ret && (ime_buffer != nullptr)) {
-               snprintf(str, str_size, "%s", ime_buffer);
-               free(ime_buffer);
-       } else {
+       if (ret != 0 || ime_buffer == nullptr) {
                printf("\tThere is no SIM%d card, ret:%d ime_buffer addr:0x%x\n", sim_number, ret, (unsigned int)ime_buffer);
                if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                        eprintf("telephony_deinit failed");
-                       return MENURUN_ERR_NORMAL;
+                       return false;
                }
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
+       snprintf(str, str_size, "%s", ime_buffer);
+       free(ime_buffer);
 
        if (telephony_deinit(&tel_h_list) != TELEPHONY_ERROR_NONE) {
                eprintf("telephony_deinit failed");
-               return MENURUN_ERR_NORMAL;
+               return false;
        }
 
-       return MENURUN_ERR_NONE;
+       return true;
 }
 
 static MENURUN_ERROR menufunc_ad_ime1(int argc, char *argv[], GenSettingMenu *menu)
 {
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
-       MENURUN_ERROR ret = _get_sim_ime(1, str, sizeof(str));
-       if (ret != MENURUN_ERR_NONE)
-               return ret;
+       if (!_get_sim_ime(1, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
        printf("\tIME1 : ");
        printf("%s\n", str);
-       return ret;
+
+       return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_ime1(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       if (!_get_sim_ime(1, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
 static MENURUN_ERROR menufunc_ad_ime2(int argc, char *argv[], GenSettingMenu *menu)
 {
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
-       MENURUN_ERROR ret = _get_sim_ime(2, str, sizeof(str));
-       if (ret != MENURUN_ERR_NONE)
-               return ret;
+       if (!_get_sim_ime(2, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
        printf("\tIME2 : ");
        printf("%s\n", str);
-       return ret;
-}
 
-static MENURUN_ERROR menufunc_ad_bta(int argc, char *argv[], GenSettingMenu *menu)
+       return MENURUN_ERR_NONE;
+}
+static MENURUN_ERROR menugetstring_ad_ime2(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
 {
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       if (!_get_sim_ime(2, str, sizeof(str)))
+               return MENURUN_ERR_NORMAL;
+       resultstr = str;
 
-       int ret = bt_initialize();
+       return MENURUN_ERR_NONE;
+};
 
+static MENURUN_ERROR menufunc_ad_bta(int argc, char *argv[], GenSettingMenu *menu)
+{
+       int ret = bt_initialize();
        char *local_address = nullptr;
        ret = bt_adapter_get_address(&local_address);
 
        bt_deinitialize();
 
        if (ret != BT_ERROR_NONE) {
+               char errmsg[200];
                if (ret == BT_ERROR_NOT_ENABLED)
-                       snprintf(str, sizeof(str), "Bluetooth is disabled!\n");
+                       snprintf(errmsg, sizeof(errmsg), "Bluetooth is disabled!\n");
                else
-                       snprintf(str, sizeof(str), "Bluetooth is unavailable!\n");
-               eprintf("Fail to get BT address, error code: %d\n",
-                               ret);
-       } else {
-               snprintf(str, sizeof(str), "%s", local_address);
+                       snprintf(errmsg, sizeof(errmsg), "Bluetooth is unavailable!\n");
+               eprintf("Fail to get BT address, error code: %s\n", errmsg);
                free(local_address);
+               return MENURUN_ERR_NORMAL;
        }
+       
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%s", local_address);
+       free(local_address);
        printf("\tBluetooth address : ");
        printf("%s\n", str);
+
        return MENURUN_ERR_NONE;
 }
 
-static MENURUN_ERROR menufunc_ad_wfa(int argc, char *argv[], GenSettingMenu *menu)
+static MENURUN_ERROR menugetstring_ad_bta(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
 {
+       int ret = bt_initialize();
+       char *local_address = nullptr;
+       ret = bt_adapter_get_address(&local_address);
+
+       bt_deinitialize();
+
+       if (ret != BT_ERROR_NONE) {
+               char errmsg[200];
+               if (ret == BT_ERROR_NOT_ENABLED)
+                       snprintf(errmsg, sizeof(errmsg), "Bluetooth is disabled!\n");
+               else
+                       snprintf(errmsg, sizeof(errmsg), "Bluetooth is unavailable!\n");
+               eprintf("Fail to get BT address, error code: %s\n", errmsg);
+               free(local_address);
+               return MENURUN_ERR_NORMAL;
+       }
+
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%s", local_address);
+       free(local_address);
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
+static MENURUN_ERROR menufunc_ad_wfa(int argc, char *argv[], GenSettingMenu *menu)
+{
        wifi_manager_h wifi_handle = nullptr;
        char *mac_addr = nullptr;
 
@@ -377,27 +511,62 @@ static MENURUN_ERROR menufunc_ad_wfa(int argc, char *argv[], GenSettingMenu *men
 
        /* get wifi mac address */
        ret = wifi_manager_get_mac_address(wifi_handle, &mac_addr);
-       if (ret == WIFI_MANAGER_ERROR_NONE && mac_addr) {
-               snprintf(str, sizeof(str), "%s", mac_addr);
-               free(mac_addr);
-       } else {
-               snprintf(str, sizeof(str), "WIFI is unavailable!\n");
-               eprintf("Fail to get WIFI address, error code: %d\n",
-                               ret);
+       if (ret != WIFI_MANAGER_ERROR_NONE && mac_addr) {
+               char errmsg[200];
+               snprintf(errmsg, sizeof(errmsg), "WIFI is unavailable!\n");
+               eprintf("Fail to get WIFI address, error code: %s\n", errmsg);
+               return MENURUN_ERR_NORMAL;
        }
 
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%s", mac_addr);
+       free(mac_addr);
+
        /* release wifi handle */
        ret = wifi_manager_deinitialize(wifi_handle);
        if (ret != WIFI_MANAGER_ERROR_NONE)
                return MENURUN_ERR_NORMAL;
+
        printf("\tWIFI address : ");
        printf("%s\n", str);
+
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_wfa(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       wifi_manager_h wifi_handle = nullptr;
+       char *mac_addr = nullptr;
+
+       /* get wifi handle */
+       int ret = wifi_manager_initialize(&wifi_handle);
+       if (ret != WIFI_MANAGER_ERROR_NONE)
+               return MENURUN_ERR_NORMAL;
+
+       /* get wifi mac address */
+       ret = wifi_manager_get_mac_address(wifi_handle, &mac_addr);
+       if (ret != WIFI_MANAGER_ERROR_NONE && mac_addr) {
+               char errmsg[200];
+               snprintf(errmsg, sizeof(errmsg), "WIFI is unavailable!\n");
+               eprintf("Fail to get WIFI address, error code: %s\n", errmsg);
+               return MENURUN_ERR_NORMAL;
+       }
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%s", mac_addr);
+       free(mac_addr);
+
+       /* release wifi handle */
+       ret = wifi_manager_deinitialize(wifi_handle);
+       if (ret != WIFI_MANAGER_ERROR_NONE)
+               return MENURUN_ERR_NORMAL;
+
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
 static MENURUN_ERROR menufunc_ad_sto(int argc, char *argv[], GenSettingMenu *menu)
 {
-       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
        long long int total = 0;
        long long int avail = 0;
        struct statvfs internal;
@@ -405,14 +574,12 @@ static MENURUN_ERROR menufunc_ad_sto(int argc, char *argv[], GenSettingMenu *men
 
        if (storage_get_internal_memory_size(&internal) < 0) {
                eprintf("Fail to get internal memory size\n");
-               snprintf(str, sizeof(str), "internal storage is unavailable!\n");
                return MENURUN_ERR_NORMAL;
-       } else {
-               total = (long long int)internal.f_frsize
-                               * (long long int)internal.f_blocks;
-               avail = (long long int)internal.f_bsize
-                               * (long long int)internal.f_bavail;
        }
+       total = (long long int)internal.f_frsize
+                       * (long long int)internal.f_blocks;
+       avail = (long long int)internal.f_bsize
+                       * (long long int)internal.f_bavail;
 
        if (storage_get_external_memory_size(&external) < 0) {
                eprintf("Fail to get external memory size\n");
@@ -426,9 +593,10 @@ static MENURUN_ERROR menufunc_ad_sto(int argc, char *argv[], GenSettingMenu *men
        /* check if values are appropriate*/
        if (total < 0 || avail < 0 || total < avail) {
                eprintf("Fail to get internal memory size\n");
-               snprintf(str, sizeof(str), "external storage is unavailable!\n");
                return MENURUN_ERR_NORMAL;
        }
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
        snprintf(str, sizeof(str), "%0.1fGB available (Total %0.1fGB)",
                (double)(avail / 1000000000.0), (double)(total / 1000000000.0));
        printf("\tStorage Size : ");
@@ -436,64 +604,126 @@ static MENURUN_ERROR menufunc_ad_sto(int argc, char *argv[], GenSettingMenu *men
 
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_ad_sto(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       long long int total = 0;
+       long long int avail = 0;
+       struct statvfs internal;
+       struct statvfs external;
+
+       if (storage_get_internal_memory_size(&internal) < 0) {
+               eprintf("Fail to get internal memory size\n");
+               return MENURUN_ERR_NORMAL;
+       }
+       total = (long long int)internal.f_frsize
+               * (long long int)internal.f_blocks;
+       avail = (long long int)internal.f_bsize
+               * (long long int)internal.f_bavail;
+
+       if (storage_get_external_memory_size(&external) < 0) {
+               eprintf("Fail to get external memory size\n");
+       }
+       else {
+               total += (long long int)external.f_frsize
+                       * (long long int)external.f_blocks;
+               avail += (long long int)external.f_bsize
+                       * (long long int)external.f_bavail;
+       }
+
+       /* check if values are appropriate*/
+       if (total < 0 || avail < 0 || total < avail) {
+               eprintf("Fail to get internal memory size\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%0.1fGB available (Total %0.1fGB)",
+               (double)(avail / 1000000000.0), (double)(total / 1000000000.0));
+       resultstr = str;
+
+       return MENURUN_ERR_NONE;
+};
 
 static MENURUN_ERROR menufunc_ad_batt(int argc, char *argv[], GenSettingMenu *menu)
 {
-       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");
+               SETTING_ABOUT_POWER_SUPPLY_PATH, "battery", "capacity");
+
+       int fd = open(file, O_RDONLY);
+       if (fd == -1) {
+               eprintf("open file fail\n");
+               return MENURUN_ERR_NORMAL;
+       }
 
-       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
        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, sizeof(str), "%d%%", val);
-               } else {
-                       eprintf("read file fail\n");
-                       snprintf(str, sizeof(str), "%s unavailable!\n", SETTING_ABOUT_POWER_SUPPLY_PATH);
-               }
+       int r = read(fd, buf, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+       if (r < 0 || r >= MAX_DISPLAY_STR_LEN_ON_PHONE_INFO) {
+               eprintf("read file fail\n");
+               return MENURUN_ERR_NORMAL;
+       }
+       close(fd);
 
-               close(fd);
-               printf("\tBattery percentage : ");
-               printf("%s\n", str);
-       } else {
+       buf[r] = '\0';
+       int val = atoi(buf);
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%d%%", val);
+       printf("\tBattery percentage : ");
+       printf("%s\n", str);
+
+       return MENURUN_ERR_NONE;
+}
+static MENURUN_ERROR menugetstring_ad_batt(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       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");
+
+       int fd = open(file, O_RDONLY);
+       if (fd == -1) {
                eprintf("open file fail\n");
-               snprintf(str, sizeof(str), "%s unavailable!\n", SETTING_ABOUT_POWER_SUPPLY_PATH);
+               return MENURUN_ERR_NORMAL;
+       }
+
+       char buf[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
+       int r = read(fd, buf, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
+       if (r < 0 || r >= MAX_DISPLAY_STR_LEN_ON_PHONE_INFO) {
+               eprintf("read file fail\n");
+               return MENURUN_ERR_NORMAL;
        }
+       close(fd);
+
+       buf[r] = '\0';
+       int val = atoi(buf);
+
+       char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO];
+       snprintf(str, sizeof(str), "%d%%", val);
+       resultstr = str;
+
        return MENURUN_ERR_NONE;
 }
 
 static int __stat_get_cpu_usage(float *usr_pct, float *sys_pct)
 {
+       static unsigned long long usr_time = 0, sys_time = 0;
+       static unsigned long long old_usr = 0, old_sys = 0;
+       static struct timeval old_tv, cur_tv;
+
 
        /*      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 = nullptr;
-       int ret = 0;
 
-       tick_per_sec = sysconf(_SC_CLK_TCK);
-       cpu_num = sysconf(_SC_NPROCESSORS_ONLN);
+       long tick_per_sec = sysconf(_SC_CLK_TCK);
+       long cpu_num = sysconf(_SC_NPROCESSORS_ONLN);
 
        if (cpu_num < 1)
                cpu_num = 1;
 
        gettimeofday(&cur_tv, nullptr);
-       fp = fopen(SETTING_ABOUT_STAT_PATH, "r");
+       
+       FILE *fp = fopen(SETTING_ABOUT_STAT_PATH, "r");
        if (fp == nullptr) {
                eprintf("fp == nullptr\n");
                return -ENOENT;
@@ -534,16 +764,17 @@ static int __stat_get_cpu_usage(float *usr_pct, float *sys_pct)
                if (i >= 3)
                        break;
        }
-
        fclose(fp);
-       fp = nullptr;
+
        if (old_usr == 0) {
-               ret = -EAGAIN;
-               //eprintf("old_usr == 0\n");
-               goto out;
+               old_usr = usr_time;
+               old_sys = sys_time;
+               old_tv = cur_tv;
+
+               return -EAGAIN;
        }
 
-       elapsed_tick = (unsigned long long)(((long long)cur_tv.tv_sec
+       unsigned long long 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);
@@ -563,24 +794,20 @@ static int __stat_get_cpu_usage(float *usr_pct, float *sys_pct)
                *sys_pct = 0;
        }
 
-out:
        old_usr = usr_time;
        /*old_nice = nice_time; */
        old_sys = sys_time;
        old_tv = cur_tv;
 
-       return ret;
+       return 0;
 }
-
 static MENURUN_ERROR menufunc_ad_cpuu(int argc, char *argv[], GenSettingMenu *menu)
 {
-       float usr = 0.0;
-       float sys = 0.0;
-       MENURUN_ERROR ret = MENURUN_ERR_NONE;
        printf("\tWhen you want to stop checking CPU usage,\n");
        printf("\tPress Ctrl+C\n\n");
 
        while(1) {
+               float usr = 0.0, sys = 0.0;
                int result = __stat_get_cpu_usage(&usr, &sys);
                if (result != 0)
                        continue;
@@ -588,25 +815,47 @@ static MENURUN_ERROR menufunc_ad_cpuu(int argc, char *argv[], GenSettingMenu *me
                printf("%.0f%%\n", usr + sys);
                sleep(1);
        }
-       return ret;
+
+       return MENURUN_ERR_NONE;
+}
+static MENURUN_ERROR menugetstring_ad_cpuu(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       const int repeatcout = 4;
+
+       float sum = 0.0;
+       for(int i=0;i<repeatcout;i++){
+               float usr = 0.0, sys = 0.0;
+               int result = __stat_get_cpu_usage(&usr, &sys);
+               if (result != 0)
+                       continue;
+               sum += usr + sys;
+               sleep(1);
+       }
+       sum /= repeatcout;
+
+       char tempstr[100];
+       snprintf(tempstr, sizeof(tempstr), "%.0f%%\n", sum);
+       resultstr= tempstr;
+
+       return MENURUN_ERR_NONE;
 }
 
 MenuItem ad_menulist[] ={
-       {"name", "Name", menufunc_ad_name},
-       {"mn", "Model number", menufunc_ad_mn},
-       {"ver", "Tizen version", menufunc_ad_ver},
-       {"cpu", "CPU", menufunc_ad_cpu},
-       {"ram", "RAM", menufunc_ad_ram},
-       {"res", "Resolution", menufunc_ad_res},
-       {"sim1", "SIM1 Phone Number", menufunc_ad_sim1},
-       {"sim2", "SIM2 Phone Number", menufunc_ad_sim2},
-       {"ime1", "IME1", menufunc_ad_ime1},
-       {"ime2", "IME2", menufunc_ad_ime2},
-       {"bta", "Bluetooth address", menufunc_ad_bta},
-       {"wfa", "Wi-Fi MAC Address", menufunc_ad_wfa},
-       {"sto", "Storage", menufunc_ad_sto},
-       {"batt", "Battery percentage", menufunc_ad_batt},
-       {"cpuu", "CPU usage", menufunc_ad_cpuu}
+       {"name", "Name", menufunc_ad_name, nullptr, menugetstring_ad_name},
+       {"mn", "Model number", menufunc_ad_mn, nullptr, menugetstring_ad_mn},
+       {"ver", "Tizen version", menufunc_ad_ver, nullptr, menugetstring_ad_ver},
+       {"cpu", "CPU", menufunc_ad_cpu, nullptr, menugetstring_ad_cpu},
+       {"ram", "RAM", menufunc_ad_ram, nullptr, menugetstring_ad_ram},
+       {"res", "Resolution", menufunc_ad_res, nullptr, menugetstring_ad_res},
+       {"sim1", "SIM1 Phone Number", menufunc_ad_sim1, nullptr, menugetstring_ad_sim1},
+       {"sim2", "SIM2 Phone Number", menufunc_ad_sim2, nullptr, menugetstring_ad_sim2},
+       {"ime1", "IME1", menufunc_ad_ime1, nullptr, menugetstring_ad_ime1},
+       {"ime2", "IME2", menufunc_ad_ime2, nullptr, menugetstring_ad_ime2},
+       {"bta", "Bluetooth address", menufunc_ad_bta, nullptr, menugetstring_ad_bta},
+       {"wfa", "Wi-Fi MAC Address", menufunc_ad_wfa, nullptr, menugetstring_ad_wfa},
+       {"sto", "Storage", menufunc_ad_sto, nullptr, menugetstring_ad_sto},
+       {"batt", "Battery percentage", menufunc_ad_batt, nullptr, menugetstring_ad_batt},
+       {"cpuu", "CPU usage", menufunc_ad_cpuu, nullptr, menugetstring_ad_cpuu}
 };
 
 void precreate_ad(GenSettingMenu *menu)
index b75400c..4f31714 100644 (file)
@@ -8,22 +8,37 @@
 #include <vconf-internal-keys.h>
 #include <system_settings.h>
 
+using namespace std;
+
 static MENURUN_ERROR menufunc_am_st(int argc, char *argv[], GenSettingMenu *menu)
 {
     bool ret_state = false;
 
        int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &ret_state);
-    if( ret != MENURUN_ERR_NONE ) {
-        eprintf("\tFlight mode get fail\n");
+       if (ret != 0) {
+               eprintf("\tFlight mode get fail\n");
                return MENURUN_ERR_NORMAL;
     }
 
        printf("\tFlight mode : %s\n", ret_state? "On" : "Off");
     return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_am_st(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       bool ret_state = false;
+
+       int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &ret_state);
+       if (ret != 0) {
+               eprintf("\tFlight mode get fail\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       resultstr = ret_state ? "On" : "Off";
+       return MENURUN_ERR_NONE;
+}
 
 MenuItem am_menulist[] ={
-       {"st", "State", menufunc_am_st}
+       {"st", "State", menufunc_am_st, nullptr, menugetstring_am_st}
 };
 
 void precreate_am(GenSettingMenu *menu)
index 68fb9f1..dc34c08 100644 (file)
@@ -9,6 +9,8 @@
 #include <system_settings.h>
 #include <bluetooth.h>
 
+using namespace std;
+
 static MENURUN_ERROR menufunc_bt_st(int argc, char *argv[], GenSettingMenu *menu)
 {
        if (bt_initialize() != BT_ERROR_NONE) {
@@ -26,9 +28,26 @@ static MENURUN_ERROR menufunc_bt_st(int argc, char *argv[], GenSettingMenu *menu
        printf("\tState : %s\n", (bt_state == BT_ADAPTER_ENABLED) ? "On" : "Off");
     return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_bt_st(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       if (bt_initialize() != BT_ERROR_NONE) {
+               eprintf("bt_initialize() failed\n");
+               return MENURUN_ERR_NORMAL;
+       }
+       bt_adapter_state_e bt_state;
+       if (bt_adapter_get_state(&bt_state) != BT_ERROR_NONE) {
+               eprintf("bt_adapter_get_state() failed\n");
+               bt_deinitialize();
+               return MENURUN_ERR_NORMAL;
+       }
+       bt_deinitialize();
+
+       resultstr = (bt_state == BT_ADAPTER_ENABLED) ? "On" : "Off";
+       return MENURUN_ERR_NONE;
+}
 
 MenuItem bt_menulist[] ={
-       {"st", "State", menufunc_bt_st}
+       {"st", "State", menufunc_bt_st, nullptr, menugetstring_bt_st}
 };
 
 void precreate_bt(GenSettingMenu *menu)
index 18b11a5..e34af95 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <system_info.h>
 
-
+using namespace std;
 
 static MENURUN_ERROR menufunc_dt_au(int argc, char *argv[], GenSettingMenu *menu)
 {
@@ -26,10 +26,24 @@ static MENURUN_ERROR menufunc_dt_au(int argc, char *argv[], GenSettingMenu *menu
 
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_dt_au(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int auto_update = 0;
+
+       int ret = vconf_get_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &auto_update);
+       if (ret != 0) {
+               eprintf("\tFail to get Auto update!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       resultstr = auto_update ? "On" : "Off";
+
+       return MENURUN_ERR_NONE;
+}
 
 
 MenuItem dt_menulist[] ={
-       {"au", "Auto update", menufunc_dt_au, nullptr},
+       {"au", "Auto update", menufunc_dt_au, nullptr, menugetstring_dt_au},
        {"date", "Date", nullptr, nullptr},
        {"time", "Time", nullptr, nullptr},
        {"tz", "Time zone", nullptr, nullptr},
index 448e25c..b032af6 100644 (file)
@@ -9,6 +9,8 @@
 #include <vconf-internal-keys.h>
 #include <system_info.h>
 
+using namespace std;
+
 static MENURUN_ERROR menufunc_di_ab(int argc, char *argv[], GenSettingMenu *menu)
 {
        int auto_bright = 0;
@@ -22,13 +24,23 @@ static MENURUN_ERROR menufunc_di_ab(int argc, char *argv[], GenSettingMenu *menu
        printf("\tAuto Bright : %s\n", auto_bright? "On" : "Off");
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_di_ab(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int auto_bright = 0;
+       int ret = vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &auto_bright);
+       if (ret != 0) {
+               eprintf("\tAuto Bright get fail!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       resultstr = auto_bright ? "On" : "Off";
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_di_br(int argc, char *argv[], GenSettingMenu *menu)
 {
        int brightness = 0;
 
-       // TODO : Checking use with device_display_get api
-    // device_display_get( int display_index, int* brightness );
        int ret = vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness);
     if(ret != 0) {
         eprintf("\tbrightness get fail!\n");
@@ -38,6 +50,21 @@ static MENURUN_ERROR menufunc_di_br(int argc, char *argv[], GenSettingMenu *menu
        printf("\tBrightness : %d\n", brightness);
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_di_br(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int brightness = 0;
+
+       int ret = vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness);
+       if (ret != 0) {
+               eprintf("\tbrightness get fail!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       char tempstr[20];
+       snprintf(tempstr,sizeof(tempstr),"%d %%", brightness);
+       resultstr = tempstr;
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_di_fs(int argc, char *argv[], GenSettingMenu *menu)
 {
@@ -52,23 +79,57 @@ static MENURUN_ERROR menufunc_di_fs(int argc, char *argv[], GenSettingMenu *menu
        printf("\tFont Size: %d\n", fontsize );
     return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_di_fs(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int fontsize = 0;
+
+       int ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontsize);
+       if (ret != 0) {
+               eprintf("\tFont get fail!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       char tempstr[20];
+       snprintf(tempstr, sizeof(tempstr), "%d", fontsize);
+       resultstr = tempstr;
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_di_to(int argc, char *argv[], GenSettingMenu *menu)
 {
-
        int timeout = 0;
        vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &timeout);
+
        printf("\tScreen timeout : ");
-       printf("%d\n", timeout);
+       if (timeout)
+               printf("Always\n");
+       else
+               printf("%d sec\n", timeout);
+
+       return MENURUN_ERR_NONE;
+}
+static MENURUN_ERROR menugetstring_di_to(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int timeout = 0;
+       vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &timeout);
+
+       if (timeout) {
+               resultstr = "Always";
+       }
+       else {
+               char tempstr[30];
+               snprintf(tempstr, sizeof(tempstr), "%d sec", timeout);
+               resultstr = tempstr;
+       }
 
        return MENURUN_ERR_NONE;
 }
 
 MenuItem di_menulist[] ={
-       {"ab", "Auto Bright", menufunc_di_ab},
-       {"br", "Brightness", menufunc_di_br},
-       {"fs", "Font Size", menufunc_di_fs},
-       {"to", "Screen timeout", menufunc_di_to}
+       {"ab", "Auto Bright", menufunc_di_ab, nullptr, menugetstring_di_ab},
+       {"br", "Brightness", menufunc_di_br, nullptr, menugetstring_di_br},
+       {"fs", "Font Size", menufunc_di_fs, nullptr, menugetstring_di_fs},
+       {"to", "Screen timeout", menufunc_di_to, nullptr, menugetstring_di_to}
 };
 
 void precreate_di(GenSettingMenu *menu)
index c95c344..af6410f 100644 (file)
@@ -11,6 +11,8 @@
 #include <app_manager.h>
 //#include <feedback.h>
 
+using namespace std;
+
 typedef struct {
        sound_stream_info_h ringtone_sound_stream_info;
        sound_stream_info_h media_sound_stream_info;
@@ -87,6 +89,25 @@ static MENURUN_ERROR menufunc_so_rvol(int argc, char *argv[], GenSettingMenu *me
        printf("%d\n", vol);
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_so_rvol(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       sound_stream_info_t sound_stream_info;
+       if (!_sound_manager_init(&sound_stream_info)) {
+               eprintf("_sound_manager_init() failed!");
+               return MENURUN_ERR_NORMAL;
+       }
+       int vol = 0;
+       if (sound_manager_get_volume(SOUND_TYPE_RINGTONE, &vol) != SOUND_MANAGER_ERROR_NONE) {
+               _sound_manager_deinit(&sound_stream_info);
+               return MENURUN_ERR_NORMAL;
+       }
+       _sound_manager_deinit(&sound_stream_info);
+
+       char temstr[30];
+       snprintf(temstr, sizeof(temstr), "%d", vol);
+       resultstr = temstr;
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_so_nvol(int argc, char *argv[], GenSettingMenu *menu)
 {
@@ -106,6 +127,25 @@ static MENURUN_ERROR menufunc_so_nvol(int argc, char *argv[], GenSettingMenu *me
        printf("%d\n", vol);
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_so_nvol(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       sound_stream_info_t sound_stream_info;
+       if (!_sound_manager_init(&sound_stream_info)) {
+               eprintf("_sound_manager_init() failed!");
+               return MENURUN_ERR_NORMAL;
+       }
+       int vol = 0;
+       if (sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &vol) != SOUND_MANAGER_ERROR_NONE) {
+               _sound_manager_deinit(&sound_stream_info);
+               return MENURUN_ERR_NORMAL;
+       }
+       _sound_manager_deinit(&sound_stream_info);
+
+       char temstr[30];
+       snprintf(temstr, sizeof(temstr), "%d", vol);
+       resultstr = temstr;
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_so_mvol(int argc, char *argv[], GenSettingMenu *menu)
 {
@@ -125,6 +165,25 @@ static MENURUN_ERROR menufunc_so_mvol(int argc, char *argv[], GenSettingMenu *me
        printf("%d\n", vol);
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_so_mvol(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       sound_stream_info_t sound_stream_info;
+       if (!_sound_manager_init(&sound_stream_info)) {
+               eprintf("_sound_manager_init() failed!");
+               return MENURUN_ERR_NORMAL;
+       }
+       int vol = 0;
+       if (sound_manager_get_volume(SOUND_TYPE_MEDIA, &vol) != SOUND_MANAGER_ERROR_NONE) {
+               _sound_manager_deinit(&sound_stream_info);
+               return MENURUN_ERR_NORMAL;
+       }
+       _sound_manager_deinit(&sound_stream_info);
+
+       char temstr[30];
+       snprintf(temstr, sizeof(temstr), "%d", vol);
+       resultstr = temstr;
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_so_svol(int argc, char *argv[], GenSettingMenu *menu)
 {
@@ -145,15 +204,35 @@ static MENURUN_ERROR menufunc_so_svol(int argc, char *argv[], GenSettingMenu *me
        printf("%d\n", vol);
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_so_svol(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       sound_stream_info_t sound_stream_info;
+       if (!_sound_manager_init(&sound_stream_info)) {
+               eprintf("_sound_manager_init() failed!");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       int vol = 0;
+       if (sound_manager_get_volume(SOUND_TYPE_SYSTEM, &vol) != SOUND_MANAGER_ERROR_NONE) {
+               _sound_manager_deinit(&sound_stream_info);
+               return MENURUN_ERR_NORMAL;
+       }
+       _sound_manager_deinit(&sound_stream_info);
+
+       char temstr[30];
+       snprintf(temstr, sizeof(temstr), "%d", vol);
+       resultstr = temstr;
+       return MENURUN_ERR_NONE;
+}
 
 
 
 
 MenuItem so_menulist[] ={
-       {"rvol", "Ringtone Volume", menufunc_so_rvol},
-       {"nvol", "Notification Volume", menufunc_so_nvol},
-       {"mvol", "Media Volume", menufunc_so_mvol},
-       {"svol", "System Volume", menufunc_so_svol}
+       {"rvol", "Ringtone Volume", menufunc_so_rvol, nullptr, menugetstring_so_rvol},
+       {"nvol", "Notification Volume", menufunc_so_nvol, nullptr, menugetstring_so_nvol},
+       {"mvol", "Media Volume", menufunc_so_mvol, nullptr, menugetstring_so_mvol},
+       {"svol", "System Volume", menufunc_so_svol, nullptr, menugetstring_so_svol}
 };
 
 void precreate_so(GenSettingMenu *menu)
index 894a95d..babab67 100644 (file)
@@ -8,11 +8,13 @@
 #include <vconf-internal-keys.h>
 #include <system_settings.h>
 
+using namespace std;
+
 static MENURUN_ERROR menufunc_wf_st(int argc, char *argv[], GenSettingMenu *menu)
 {
        int state = 0;
        int ret = vconf_get_int(VCONFKEY_WIFI_STATE, &state);
-       if (ret != MENURUN_ERR_NONE) {
+       if (ret != 0) {
                eprintf("\twifi state get fail!\n");
                return MENURUN_ERR_NORMAL;
        }
@@ -20,12 +22,36 @@ static MENURUN_ERROR menufunc_wf_st(int argc, char *argv[], GenSettingMenu *menu
        printf("\tState : %s\n", state ? "On" : "Off");
        return MENURUN_ERR_NONE;
 }
+static MENURUN_ERROR menugetstring_wf_st(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       int state = 0;
+       int ret = vconf_get_int(VCONFKEY_WIFI_STATE, &state);
+       if (ret != 0) {
+               eprintf("\twifi state get fail!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       resultstr = state ? "On" : "Off";
+       return MENURUN_ERR_NONE;
+}
 
 static MENURUN_ERROR menufunc_wf_nf(int argc, char *argv[], GenSettingMenu *menu)
 {
        bool state = false;
        int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &state);
-       if (ret != MENURUN_ERR_NONE) {
+       if (ret != 0) {
+               eprintf("\twifi notification get fail!\n");
+               return MENURUN_ERR_NORMAL;
+       }
+
+       printf("\tNodification : %s\n", state ? "On" : "Off");
+       return MENURUN_ERR_NONE;
+}
+static MENURUN_ERROR menugetstring_wf_nf(string &resultstr, int argc, char *argv[], GenSettingMenu *menu)
+{
+       bool state = false;
+       int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &state);
+       if (ret != 0) {
                eprintf("\twifi notification get fail!\n");
                return MENURUN_ERR_NORMAL;
        }
@@ -35,8 +61,8 @@ static MENURUN_ERROR menufunc_wf_nf(int argc, char *argv[], GenSettingMenu *menu
 }
 
 MenuItem wf_menulist[] = {
-       {"st", "State", menufunc_wf_st, nullptr},
-       {"nf", "Notification", menufunc_wf_nf, nullptr}
+       {"st", "State", menufunc_wf_st, nullptr, menugetstring_wf_st},
+       {"nf", "Notification", menufunc_wf_nf, nullptr, menugetstring_wf_nf}
 };
 
 
diff --git a/template/sc_tmolt_sound_status.txt b/template/sc_tmolt_sound_status.txt
new file mode 100644 (file)
index 0000000..d6d7282
--- /dev/null
@@ -0,0 +1,6 @@
+This is sample report of [Sound Status]
+
+   * Ringtone Volume : @so/rvol
+   * Notification Volume : @so/nvol
+   * Media Volume : @so/mvol
+   * System Volume : @so/svol
diff --git a/template/sc_tmplt_aboutdevice.txt b/template/sc_tmplt_aboutdevice.txt
new file mode 100644 (file)
index 0000000..fb22fdb
--- /dev/null
@@ -0,0 +1,20 @@
+This is sample report of [About Device]
+
+   * Name : @ad/name
+   * Model: @ad/mn
+   * Tizen version: @ad/ver
+   * CPU : @ad/cpu
+   * RAM : @ad/ram
+   * Resolution : @ad/res
+   * Phone Number
+      - SIM1 : @ad/sim1
+      - SIM2 : @ad/sim2
+   * IME
+      - IME1 : @ad/ime1
+      - IME2 : @ad/ime2
+   * Bluetooth address : @ad/bta
+   * Wi-Fi MAC Address : @ad/wfa
+   * Storage : @ad/sto
+   * Battery percentage : @ad/batt
+   * CPU usage : @ad/cpuu
+
diff --git a/template/sc_tmplt_connections_status.txt b/template/sc_tmplt_connections_status.txt
new file mode 100644 (file)
index 0000000..83c68da
--- /dev/null
@@ -0,0 +1,6 @@
+This is sample report of [Connections Status]
+
+   * Airplane Mode : @am/st
+   * Bluetooth Status : @bt/st
+   * Whi-fi Status : @wf/st
+   * Whi-fi Notification: @wf/st
diff --git a/template/sc_tmplt_display_status.txt b/template/sc_tmplt_display_status.txt
new file mode 100644 (file)
index 0000000..a2838e1
--- /dev/null
@@ -0,0 +1,6 @@
+This is sample report of [Display Status]
+
+   * Auto Bright : @di/ab
+   * Brightness : @di/br
+   * Font Size : @di/fs
+   * Screen timeout : @di/to