Revert "Apply model-config.xml"
authorJungHoon Kim <david_kim31@samsung.com>
Wed, 19 Jun 2013 09:46:31 +0000 (09:46 +0000)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Wed, 19 Jun 2013 09:46:31 +0000 (09:46 +0000)
This reverts commit 15883a0e290fd784a9d475bc86684cef69148ff6

Change-Id: I6ced64f9c328f9b605a7ced878c635c17eb21796

src/system/FSys_SystemInfo.cpp
src/system/FSys_SystemInfo.h

index 8b023a1..4582dc2 100644 (file)
@@ -62,152 +62,193 @@ using namespace Tizen::Io;
 
 namespace Tizen { namespace System
 {
+
+static const wchar_t* _REGISTRY_PATH = L"/usr/etc/system-info.ini";
+static const wchar_t* _SYSTEM_INFO_SESSION = L"SystemInfo";
+
+//Bluetooth
+static const wchar_t* _BLUETOOTH = L"http://tizen.org/feature/network.bluetooth";
+
 //Camera
 static const wchar_t* _CAMERA = L"http://tizen.org/feature/camera";
-static const wchar_t* _CAMERA_BACK = L"http://tizen.org/feature/camera.back";
-static const wchar_t* _CAMERA_BACK_FLASH = L"http://tizen.org/feature/camera.back.flash";
 static const wchar_t* _CAMERA_FRONT = L"http://tizen.org/feature/camera.front";
 static const wchar_t* _CAMERA_FRONT_FLASH = L"http://tizen.org/feature/camera.front.flash";
+static const wchar_t* _CAMERA_BACK = L"http://tizen.org/feature/camera.back";
+static const wchar_t* _CAMERA_BACK_FLASH = L"http://tizen.org/feature/camera.back.flash";
+
 //Database
 static const wchar_t* _DATABASE_ENCRYPTION = L"http://tizen.org/feature/database.encryption";
 static const char* _DATABASE_LIBRARY_PATH = "/usr/lib/libsqlite3.so.0";
 static const char* _DATABASE_ENCRYPTION_SYMBOL = "sqlite3_key";
+
+//DUID
+static const wchar_t* _DUID = L"http://tizen.org/system/duid";
+
 //FM Radio
 static const wchar_t* _FMRADIO = L"http://tizen.org/feature/fmradio";
-//Graphic
-static const wchar_t* _GRAPHIC_ACCELERATION = L"http://tizen.org/feature/graphics.acceleration";
-//Input
+
+//Keyboard
 static const wchar_t* _INPUT_KEYBOARD = L"http://tizen.org/feature/input.keyboard";
 static const wchar_t* _INPUT_KEYBOARD_LAYOUT = L"http://tizen.org/feature/input.keyboard.layout";
-static const wchar_t* _INPUT_KEYS_BACK = L"http://tizen.org/feature/input.keys.back";
-static const wchar_t* _INPUT_KEYS_MENU = L"http://tizen.org/feature/input.keys.menu";
+static const wchar_t* _INPUT_OPTIONKEY = L"http://tizen.org/feature/input.option_key";
+
 //Location
 static const wchar_t* _LOCATION = L"http://tizen.org/feature/location";
 static const wchar_t* _LOCATION_GPS = L"http://tizen.org/feature/location.gps";
 static const wchar_t* _LOCATION_WPS = L"http://tizen.org/feature/location.wps";
+
 //Microphone
 static const wchar_t* _MICROPHONE = L"http://tizen.org/feature/microphone";
+
+//Model name
+static const wchar_t* _MODELNAME = L"http://tizen.org/system/model_name";
+
 //Multi point
-static const wchar_t* _MULTIPOINTTOUCH_PINCHZOOM = L"http://tizen.org/feature/multi_point_touch.pinch_zoom";
 static const wchar_t* _MULTIPOINTTOUCH_POINTCOUNT = L"http://tizen.org/feature/multi_point_touch.point_count";
-//Network bluetooth
-static const wchar_t* _NETWORK_BLUETOOTH = L"http://tizen.org/feature/network.bluetooth";
-//Network NFC
+static const wchar_t* _MULTIPOINTTOUCH_PINCHZOOM = L"http://tizen.org/feature/multi_point_touch.pinch_zoom";
+
+//NFC
 static const wchar_t* _NETWORK_NFC = L"http://tizen.org/feature/network.nfc";
 static const wchar_t* _NETWORK_NFC_RESERVED_PUSH = L"http://tizen.org/feature/network.nfc.reserved_push";
-//Network push
-static const wchar_t* _NETWORK_PUSH = L"http://tizen.org/feature/network.push";
-static const wchar_t* _NETWORK_PUSH_BIN = L"/usr/bin/pushd";
-static const wchar_t* _NETWORK_SECURE_ELEMENT = L"http://tizen.org/feature/network.secure_element";
-static const wchar_t* _SECURE_ELEMENT_BIN = L"/usr/bin/smartcard-daemon";
-//Network telephony
-static const wchar_t* _NETWORK_TELEPHONY = L"http://tizen.org/feature/network.telephony";
-static const wchar_t* _NETWORK_TELEPHONY_MMS = L"http://tizen.org/feature/network.telephony.mms";
-static const wchar_t* _NETWORK_TELEPHONY_SMS = L"http://tizen.org/feature/network.telephony.sms";
-static const wchar_t* _NETWORK_TELEPHONY_SMS_CBS = L"http://tizen.org/feature/network.telephony.sms.cbs";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_CDMA = L"http://tizen.org/feature/network.telephony.service.cdma";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_EDGE = L"http://tizen.org/feature/network.telephony.service.edge";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_GPRS = L"http://tizen.org/feature/network.telephony.service.gprs";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_GSM = L"http://tizen.org/feature/network.telephony.service.gsm";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_HSDPA = L"http://tizen.org/feature/network.telephony.service.hsdpa";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_HSPA = L"http://tizen.org/feature/network.telephony.service.hspa";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_HSUPA = L"http://tizen.org/feature/network.telephony.service.hsupa";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_LTE = L"http://tizen.org/feature/network.telephony.service.lte";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_UMTS = L"http://tizen.org/feature/network.telephony.service.umts";
-static const wchar_t* _NETWORK_TELEPHONY_SERVICE_BIN = L"/usr/bin/telephony-daemon";
-static const wchar_t* _NETWORK_TELEPHONY_MODEM_BIN = L"/boot/modem.bin";
-//Network WIFI
-static const wchar_t* _NETWORK_WIFI = L"http://tizen.org/feature/network.wifi";
-static const wchar_t* _NETWORK_WIFI_DIRECT = L"http://tizen.org/feature/network.wifi.direct";
+
 //Opengles
-static const wchar_t* _OPENGLES = L"http://tizen.org/feature/opengles";
+static const wchar_t* _OPENGLES_TEXTUREFORMAT_UTC = L"http://tizen.org/feature/opengles.texture_format.utc";
+static const wchar_t* _OPENGLES_TEXTUREFORMAT_PTC = L"http://tizen.org/feature/opengles.texture_format.ptc";
+static const wchar_t* _OPENGLES_TEXTUREFORMAT_ETC = L"http://tizen.org/feature/opengles.texture_format.etc";
 static const wchar_t* _OPENGLES_TEXTUREFORMAT_3DC = L"http://tizen.org/feature/opengles.texture_format.3dc";
 static const wchar_t* _OPENGLES_TEXTUREFORMAT_ATC = L"http://tizen.org/feature/opengles.texture_format.atc";
-static const wchar_t* _OPENGLES_TEXTUREFORMAT_ETC = L"http://tizen.org/feature/opengles.texture_format.etc";
-static const wchar_t* _OPENGLES_TEXTUREFORMAT_PTC = L"http://tizen.org/feature/opengles.texture_format.ptc";
 static const wchar_t* _OPENGLES_TEXTUREFORMAT_PVRTC = L"http://tizen.org/feature/opengles.texture_format.pvrtc";
-static const wchar_t* _OPENGLES_TEXTUREFORMAT_UTC = L"http://tizen.org/feature/opengles.texture_format.utc";
+
+static const wchar_t* _OPENGLES = L"http://tizen.org/feature/opengles";
 static const wchar_t* _OPENGLES_VERSION_1_1 = L"http://tizen.org/feature/opengles.version.1_1";
 static const wchar_t* _OPENGLES_VERSION_2_0 = L"http://tizen.org/feature/opengles.version.2_0";
-//Platform core CPU
+
+//Platform name
+static const wchar_t* _PLATFORM_NAME = L"http://tizen.org/system/platform.name";
+
+//CPU
 static const wchar_t* _PLATFORM_CORE_CPU_ARCH_ARMV6 = L"http://tizen.org/feature/platform.core.cpu.arch.armv6";
 static const wchar_t* _PLATFORM_CORE_CPU_ARCH_ARMV7 = L"http://tizen.org/feature/platform.core.cpu.arch.armv7";
 static const wchar_t* _PLATFORM_CORE_CPU_ARCH_X86 = L"http://tizen.org/feature/platform.core.cpu.arch.x86";
-//Platform core FPU
+
+//FPU
+static const wchar_t* _PLATFORM_CORE_FPU_ARCH_VFPV2 = L"http://tizen.org/feature/platform.core.fpu.arch.vfpv2";
+static const wchar_t* _PLATFORM_CORE_FPU_ARCH_VFPV3 = L"http://tizen.org/feature/platform.core.fpu.arch.vfpv3";
 static const wchar_t* _PLATFORM_CORE_FPU_ARCH_SSE2 = L"http://tizen.org/feature/platform.core.fpu.arch.sse2";
 static const wchar_t* _PLATFORM_CORE_FPU_ARCH_SSE3 = L"http://tizen.org/feature/platform.core.fpu.arch.sse3";
 static const wchar_t* _PLATFORM_CORE_FPU_ARCH_SSSE3 = L"http://tizen.org/feature/platform.core.fpu.arch.ssse3";
-static const wchar_t* _PLATFORM_CORE_FPU_ARCH_VFPV2 = L"http://tizen.org/feature/platform.core.fpu.arch.vfpv2";
-static const wchar_t* _PLATFORM_CORE_FPU_ARCH_VFPV3 = L"http://tizen.org/feature/platform.core.fpu.arch.vfpv3";
-//Platform Version
-static const wchar_t* _PLATFORM_NATIVE_API_VERSION = L"http://tizen.org/feature/platform.native.api.version";
-static const wchar_t* _PLATFORM_NATIVE_OSP_COMPATIBLE = L"http://tizen.org/feature/platform.native.osp_compatible";
-static const wchar_t* _PLATFORM_VERSION = L"http://tizen.org/feature/platform.version";
-static const wchar_t* _PLATFORM_WEB_API_VERSION = L"http://tizen.org/feature/platform.web.api.version";
+
 //Screen
-static const wchar_t* _SCREEN_AUTO_ROTATION = L"http://tizen.org/feature/screen.auto_rotation";
 static const wchar_t* _SCREEN_BPP = L"http://tizen.org/feature/screen.bpp";
-static const wchar_t* _SCREEN_COORDINATE_SYSTEM_SIZE_LARGE = L"http://tizen.org/feature/screen.coordinate_system.size.large";
-static const wchar_t* _SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL = L"http://tizen.org/feature/screen.coordinate_system.size.normal";
 static const wchar_t* _SCREEN_DESKTOPMODE = L"http://tizen.org/feature/screen.desktop_mode";
 static const wchar_t* _SCREEN_DPI = L"http://tizen.org/feature/screen.dpi";
 static const wchar_t* _SCREEN_HEIGHT = L"http://tizen.org/feature/screen.height";
-static const wchar_t* _SCREEN_SIZE_LARGE = L"http://tizen.org/feature/screen.size.large";
-static const wchar_t* _SCREEN_SIZE_NORMAL = L"http://tizen.org/feature/screen.size.normal";
-static const wchar_t* _SCREEN_SIZE_NORMAL_480_800 = L"http://tizen.org/feature/screen.size.normal.480.800";
-static const wchar_t* _SCREEN_SIZE_NORMAL_720_1280 = L"http://tizen.org/feature/screen.size.normal.720.1280";
 static const wchar_t* _SCREEN_WIDTH = L"http://tizen.org/feature/screen.width";
-//Screen HDMI RCA
+
+//Graphic
+static const wchar_t* _GRAPHIC_ACCELERATION = L"http://tizen.org/feature/graphics.acceleration";
+
+//HDMI RCA
 static const wchar_t* _SCREEN_OUTPUT_HDMI = L"http://tizen.org/feature/screen.output.hdmi";
 static const wchar_t* _SCREEN_OUTPUT_RCA = L"http://tizen.org/feature/screen.output.rca";
-//Shell
-static const wchar_t* _SHELL_APPWIDGET = L"http://tizen.org/feature/shell.appwidget";
-//Sensor
+
+//Sensors
 static const wchar_t* _SENSOR_ACCELEROMETER = L"http://tizen.org/feature/sensor.accelerometer";
 static const wchar_t* _SENSOR_ACCELEROMETER_WAKEUP = L"http://tizen.org/feature/sensor.accelerometer.wakeup";
 static const wchar_t* _SENSOR_BAROMETER = L"http://tizen.org/feature/sensor.barometer";
 static const wchar_t* _SENSOR_BAROMETER_WAKEUP = L"http://tizen.org/feature/sensor.barometer.wakeup";
-static const wchar_t* _SENSOR_GYROSCOPE = L"http://tizen.org/feature/sensor.gyroscope";
-static const wchar_t* _SENSOR_GYROSCOPE_WAKEUP = L"http://tizen.org/feature/sensor.gyroscope.wakeup";
 static const wchar_t* _SENSOR_MAGNETOMETER = L"http://tizen.org/feature/sensor.magnetometer";
 static const wchar_t* _SENSOR_MAGNETOMETER_WAKEUP = L"http://tizen.org/feature/sensor.magnetometer.wakeup";
+static const wchar_t* _SENSOR_GYROSCOPE = L"http://tizen.org/feature/sensor.gyroscope";
+static const wchar_t* _SENSOR_GYROSCOPE_WAKEUP = L"http://tizen.org/feature/sensor.gyroscope.wakeup";
 static const wchar_t* _SENSOR_PHOTOMETER = L"http://tizen.org/feature/sensor.photometer";
 static const wchar_t* _SENSOR_PHOTOMETER_WAKEUP = L"http://tizen.org/feature/sensor.photometer.wakeup";
-static const wchar_t* _SENSOR_PROXIMITY = L"http://tizen.org/feature/sensor.proximity";
-static const wchar_t* _SENSOR_PROXIMITY_WAKEUP = L"http://tizen.org/feature/sensor.proximity.wakeup";
 static const wchar_t* _SENSOR_TILTMETER = L"http://tizen.org/feature/sensor.tiltmeter";
 static const wchar_t* _SENSOR_TILTMETER_WAKEUP = L"http://tizen.org/feature/sensor.tiltmeter.wakeup";
-//SIP VOIP
+static const wchar_t* _SENSOR_PROXIMITY = L"http://tizen.org/feature/sensor.proximity";
+static const wchar_t* _SENSOR_PROXIMITY_WAKEUP = L"http://tizen.org/feature/sensor.proximity.wakeup";
+
+//VOIP
 static const wchar_t* _SIP_VOIP = L"http://tizen.org/feature/sip.voip";
+
+//Sound
+static const wchar_t* _SOUND_MEDIA_VOLUME_MAX = L"http://tizen.org/system/sound.media.volume.resolution.max";
+static const wchar_t* _SOUND_NOTIFICATION_VOLUME_MAX = L"http://tizen.org/system/sound.notification.volume.resolution.max";
+static const wchar_t* _SOUND_RINGTONE_VOLUME_MAX = L"http://tizen.org/system/sound.ringtone.volume.resolution.max";
+static const wchar_t* _SOUND_SYSTEM_VOLUME_MAX = L"http://tizen.org/system/sound.system.volume.resolution.max";
+
 //Speech Recognition
 static const wchar_t* _SPEECH_RECOGNITION = L"http://tizen.org/feature/speech.recognition";
 static const wchar_t* _SPEECH_SYNTHESIS = L"http://tizen.org/feature/speech.synthesis";
 static const wchar_t* _TTS_LIB = L"/usr/lib/libtts.so";
+
+//Network
+static const wchar_t* _NETWORK_PUSH = L"http://tizen.org/feature/network.push";
+static const wchar_t* _NETWORK_PUSH_BIN = L"/usr/bin/pushd";
+
+//Telephony
+static const wchar_t* _TELEPHONY = L"http://tizen.org/feature/network.telephony";
+static const wchar_t* _TELEPHONY_MMS = L"http://tizen.org/feature/network.telephony.mms";
+static const wchar_t* _TELEPHONY_SMS = L"http://tizen.org/feature/network.telephony.sms";
+static const wchar_t* _TELEPHONY_SMS_CBS = L"http://tizen.org/feature/network.telephony.sms.cbs";
+static const wchar_t* _TELEPHONY_SERVICE_GSM = L"http://tizen.org/feature/network.telephony.service.gsm";
+static const wchar_t* _TELEPHONY_SERVICE_GPRS = L"http://tizen.org/feature/network.telephony.service.gprs";
+static const wchar_t* _TELEPHONY_SERVICE_EDGE = L"http://tizen.org/feature/network.telephony.service.edge";
+static const wchar_t* _TELEPHONY_SERVICE_UMTS = L"http://tizen.org/feature/network.telephony.service.umts";
+static const wchar_t* _TELEPHONY_SERVICE_HSDPA = L"http://tizen.org/feature/network.telephony.service.hsdpa";
+static const wchar_t* _TELEPHONY_SERVICE_HSUPA = L"http://tizen.org/feature/network.telephony.service.hsupa";
+static const wchar_t* _TELEPHONY_SERVICE_HSPA = L"http://tizen.org/feature/network.telephony.service.hspa";
+static const wchar_t* _TELEPHONY_SERVICE_LTE = L"http://tizen.org/feature/network.telephony.service.lte";
+static const wchar_t* _TELEPHONY_SERVICE_CDMA = L"http://tizen.org/feature/network.telephony.service.cdma";
+static const wchar_t* _TELEPHONY_SERVICE_BIN = L"/usr/bin/telephony-daemon";
+static const wchar_t* _TELEPHONY_MODEM_BIN = L"/boot/modem.bin";
+
 //USB
-static const wchar_t* _USB_ACCESSORY = L"http://tizen.org/feature/usb.accessory";
-static const wchar_t* _USB_CLIENT = L"http://tizen.org/feature/usb.client";
 static const wchar_t* _USB_HOST = L"http://tizen.org/feature/usb.host";
+static const wchar_t* _USB_CLIENT = L"http://tizen.org/feature/usb.client";
+static const wchar_t* _USB_ACCESSORY = L"http://tizen.org/feature/usb.accessory";
 static const wchar_t* _ACCESSORY_LIB = L"/opt/apps/aospd00043/lib/libosp-cond-accessory.so";
+
+//WIFI
+static const wchar_t* _WIFI = L"http://tizen.org/feature/network.wifi";
+static const wchar_t* _WIFI_DIRECT = L"http://tizen.org/feature/network.wifi.direct";
+
+//Version
+static const wchar_t* _PLATFORM_VERSION = L"http://tizen.org/feature/platform.version";
+static const wchar_t* _PLATFORM_NATIVE_API_VERSION = L"http://tizen.org/feature/platform.native.api.version";
+static const wchar_t* _PLATFORM_NATIVE_OSP_COMPATIBLE = L"http://tizen.org/feature/platform.native.osp_compatible";
+static const wchar_t* _PLATFORM_WEB_API_VERSION = L"http://tizen.org/feature/platform.web.api.version";
+static const wchar_t* _BUID_STRING = L"http://tizen.org/system/build.string";
+
+//Coordinate system
+static const wchar_t* _SCREEN_SIZE_NORMAL = L"http://tizen.org/feature/screen.size.normal";
+static const wchar_t* _SCREEN_SIZE_NORMAL_480_800 = L"http://tizen.org/feature/screen.size.normal.480.800";
+static const wchar_t* _SCREEN_SIZE_NORMAL_720_1280 = L"http://tizen.org/feature/screen.size.normal.720.1280";
+
+static const wchar_t* _SCREEN_AUTO_ROTATION = L"http://tizen.org/feature/screen.auto_rotation";
+
+static const wchar_t* _SCREEN_SIZE_LARGE = L"http://tizen.org/feature/screen.size.large";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL = L"http://tizen.org/feature/screen.coordinate_system.size.normal";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_SIZE_LARGE = L"http://tizen.org/feature/screen.coordinate_system.size.large";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_480X800 = L"http://tizen.org/feature/screen.coordinate_system.physical.normal_480x800";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_720X1280 = L"http://tizen.org/feature/screen.coordinate_system.physical.normal_720x1280";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_480X800 = L"http://tizen.org/feature/screen.coordinate_system.physical.large_480x800";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_720X1280 = L"http://tizen.org/feature/screen.coordinate_system.physical.large_720x1280";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_LOGICAL_NORMAL = L"http://tizen.org/feature/screen.coordinate_system.logical.normal";
+static const wchar_t* _SCREEN_COORDINATE_SYSTEM_LOGICAL_LARGE = L"http://tizen.org/feature/screen.coordinate_system.logical.large";
+
+//Shell
+static const wchar_t* _SHELL_APPWIDGET = L"http://tizen.org/feature/shell.appwidget";
+
 //Vision
-static const wchar_t* _VISION_FACE_RECOGNITION = L"http://tizen.org/feature/vision.face_recognition";
 static const wchar_t* _VISION_IMAGE_RECOGNITION = L"http://tizen.org/feature/vision.image_recognition";
 static const wchar_t* _VISION_QRCODE_GENERATION = L"http://tizen.org/feature/vision.qrcode_generation";
 static const wchar_t* _VISION_QRCODE_RECOGNITION = L"http://tizen.org/feature/vision.qrcode_recognition";
+static const wchar_t* _VISION_FACE_RECOGNITION = L"http://tizen.org/feature/vision.face_recognition";
 static const wchar_t* _AR_ENGINE_LIB = L"/usr/lib/osp/libarengine.so";
 
-static const wchar_t* _BUILD_STRING = L"http://tizen.org/system/build.string";
-//DUID
-static const wchar_t* _DUID = L"http://tizen.org/system/duid";
-//Model name
-static const wchar_t* _MODELNAME = L"http://tizen.org/system/model_name";
-//Platform name
-static const wchar_t* _PLATFORM_NAME = L"http://tizen.org/system/platform.name";
-//Sound
-static const wchar_t* _SOUND_MEDIA_VOLUME_MAX = L"http://tizen.org/system/sound.media.volume.resolution.max";
-static const wchar_t* _SOUND_NOTIFICATION_VOLUME_MAX = L"http://tizen.org/system/sound.notification.volume.resolution.max";
-static const wchar_t* _SOUND_RINGTONE_VOLUME_MAX = L"http://tizen.org/system/sound.ringtone.volume.resolution.max";
-static const wchar_t* _SOUND_SYSTEM_VOLUME_MAX = L"http://tizen.org/system/sound.system.volume.resolution.max";
-
+static const wchar_t* _SECURE_ELEMENT = L"http://tizen.org/feature/network.secure_element";
+static const wchar_t* _SECURE_ELEMENT_BIN = L"/usr/bin/smartcard-daemon";
 
 //Communication
 static const int _SYSTEM_GET_PARAM_TYPE = 1;
@@ -263,6 +304,14 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_WIDTH, nValue);
        reg.Flush();
 
+       this->GetValue(_BLUETOOTH, bValue);
+       if(bValue == true)
+               systemValue = _SYSTEM_CACHING_TRUE;
+       else
+               systemValue = _SYSTEM_CACHING_FALSE;
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _BLUETOOTH, systemValue);
+       reg.Flush();
+
        this->GetValue(_CAMERA, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
@@ -319,14 +368,6 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _FMRADIO, systemValue);
        reg.Flush();
 
-       this->GetValue(_GRAPHIC_ACCELERATION, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _GRAPHIC_ACCELERATION, systemValue);
-       reg.Flush();
-
        this->GetValue(_INPUT_KEYBOARD, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
@@ -339,20 +380,12 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _INPUT_KEYBOARD_LAYOUT, sValue);
        reg.Flush();
 
-       this->GetValue(_INPUT_KEYS_BACK, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _INPUT_KEYS_BACK, systemValue);
-       reg.Flush();
-
-       this->GetValue(_INPUT_KEYS_MENU, bValue);
+       this->GetValue(_INPUT_OPTIONKEY, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _INPUT_KEYS_MENU, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _INPUT_OPTIONKEY, systemValue);
        reg.Flush();
 
        this->GetValue(_LOCATION, bValue);
@@ -387,24 +420,17 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _MICROPHONE, systemValue);
        reg.Flush();
 
-       this->GetValue(_MULTIPOINTTOUCH_PINCHZOOM, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _MULTIPOINTTOUCH_PINCHZOOM, systemValue);
-       reg.Flush();
-
        this->GetValue(_MULTIPOINTTOUCH_POINTCOUNT, nValue);
        reg.AddValue(_SYSTEM_CACHING_SECTION, _MULTIPOINTTOUCH_POINTCOUNT, nValue);
        reg.Flush();
+       reg.Flush();
 
-       this->GetValue(_NETWORK_BLUETOOTH, bValue);
+       this->GetValue(_MULTIPOINTTOUCH_PINCHZOOM, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_BLUETOOTH, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _MULTIPOINTTOUCH_PINCHZOOM, systemValue);
        reg.Flush();
 
        this->GetValue(_NETWORK_NFC, bValue);
@@ -423,556 +449,550 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_NFC_RESERVED_PUSH, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_PUSH, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_3DC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_PUSH, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_3DC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_SECURE_ELEMENT, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_ATC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_SECURE_ELEMENT, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_ATC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_ETC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_ETC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_MMS, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_PTC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_MMS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_PTC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SMS, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_PVRTC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SMS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_PVRTC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SMS_CBS, bValue);
+       this->GetValue(_OPENGLES_TEXTUREFORMAT_UTC, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SMS_CBS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_UTC, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_CDMA, bValue);
+       this->GetValue(_OPENGLES, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_CDMA, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_EDGE, bValue);
+       this->GetValue(_OPENGLES_VERSION_1_1, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_EDGE, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_VERSION_1_1, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_GPRS, bValue);
+       this->GetValue(_OPENGLES_VERSION_2_0, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_GPRS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_VERSION_2_0, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_GSM, bValue);
+       this->GetValue(_PLATFORM_CORE_CPU_ARCH_ARMV6, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_GSM, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_ARMV6, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_HSDPA, bValue);
+       this->GetValue(_PLATFORM_CORE_CPU_ARCH_ARMV7, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_HSDPA, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_ARMV7, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_HSPA, bValue);
+       this->GetValue(_PLATFORM_CORE_CPU_ARCH_X86, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_HSPA, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_X86, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_HSUPA, bValue);
+       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSE2, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_HSUPA, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSE2, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_LTE, bValue);
+       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSE3, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_LTE, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSE3, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_TELEPHONY_SERVICE_UMTS, bValue);
+       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSSE3, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_TELEPHONY_SERVICE_UMTS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSSE3, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_WIFI, bValue);
+       this->GetValue(_PLATFORM_CORE_FPU_ARCH_VFPV2, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_WIFI, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_VFPV2, systemValue);
        reg.Flush();
 
-       this->GetValue(_NETWORK_WIFI_DIRECT, bValue);
+       this->GetValue(_PLATFORM_CORE_FPU_ARCH_VFPV3, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_WIFI_DIRECT, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_VFPV3, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES, bValue);
+       this->GetValue(_PLATFORM_NAME, sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NAME, sValue);
+       reg.Flush();
+
+       this->GetNativeApiVersion(sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NATIVE_API_VERSION, sValue);
+       reg.Flush();
+
+       this->GetValue(_PLATFORM_NATIVE_OSP_COMPATIBLE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NATIVE_OSP_COMPATIBLE, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_3DC, bValue);
+       this->GetPlatformVersion(sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_VERSION, sValue);
+       reg.Flush();
+
+       this->GetWebApiVersion(sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_WEB_API_VERSION, sValue);
+       reg.Flush();
+
+       this->GetValue(_SCREEN_BPP, nValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_BPP, nValue);
+       reg.Flush();
+
+       this->GetValue(_SCREEN_DESKTOPMODE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_3DC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_DESKTOPMODE, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_ATC, bValue);
+       this->GetValue(_SCREEN_OUTPUT_HDMI, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_ATC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_OUTPUT_HDMI, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_ETC, bValue);
+       this->GetValue(_SCREEN_OUTPUT_RCA, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_ETC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_OUTPUT_RCA, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_PTC, bValue);
+       this->GetValue(_SENSOR_ACCELEROMETER, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_PTC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_ACCELEROMETER, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_PVRTC, bValue);
+       this->GetValue(_SENSOR_ACCELEROMETER_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_PVRTC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_ACCELEROMETER_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_TEXTUREFORMAT_UTC, bValue);
+       this->GetValue(_SENSOR_BAROMETER, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_TEXTUREFORMAT_UTC, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_BAROMETER, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_VERSION_1_1, bValue);
+       this->GetValue(_SENSOR_BAROMETER_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_VERSION_1_1, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_BAROMETER_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_OPENGLES_VERSION_2_0, bValue);
+       this->GetValue(_SENSOR_GYROSCOPE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _OPENGLES_VERSION_2_0, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_GYROSCOPE, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_CPU_ARCH_ARMV6, bValue);
+       this->GetValue(_SENSOR_GYROSCOPE_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_ARMV6, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_GYROSCOPE_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_CPU_ARCH_ARMV7, bValue);
+       this->GetValue(_SENSOR_MAGNETOMETER, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_ARMV7, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_MAGNETOMETER, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_CPU_ARCH_X86, bValue);
+       this->GetValue(_SENSOR_MAGNETOMETER_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_CPU_ARCH_X86, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_MAGNETOMETER_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSE2, bValue);
+       this->GetValue(_SENSOR_PHOTOMETER, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSE2, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PHOTOMETER, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSE3, bValue);
+       this->GetValue(_SENSOR_PHOTOMETER_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSE3, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PHOTOMETER_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_FPU_ARCH_SSSE3, bValue);
+       this->GetValue(_SENSOR_PROXIMITY, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_SSSE3, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PROXIMITY, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_FPU_ARCH_VFPV2, bValue);
+       this->GetValue(_SENSOR_PROXIMITY_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_VFPV2, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PROXIMITY_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_CORE_FPU_ARCH_VFPV3, bValue);
+       this->GetValue(_SENSOR_TILTMETER, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_CORE_FPU_ARCH_VFPV3, systemValue);
-       reg.Flush();
-
-       this->GetValue(_PLATFORM_NATIVE_API_VERSION, sValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NATIVE_API_VERSION, sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_TILTMETER, systemValue);
        reg.Flush();
 
-       this->GetValue(_PLATFORM_NATIVE_OSP_COMPATIBLE, bValue);
+       this->GetValue(_SENSOR_TILTMETER_WAKEUP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NATIVE_OSP_COMPATIBLE, systemValue);
-       reg.Flush();
-
-       this->GetValue(_PLATFORM_VERSION, sValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_VERSION, sValue);
-       reg.Flush();
-
-       this->GetValue(_PLATFORM_WEB_API_VERSION, sValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_WEB_API_VERSION, sValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_TILTMETER_WAKEUP, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_AUTO_ROTATION, bValue);
+       this->GetValue(_SIP_VOIP, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_AUTO_ROTATION, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SIP_VOIP, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_BPP, nValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_BPP, nValue);
+       this->GetValue(_SOUND_MEDIA_VOLUME_MAX, nValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_MEDIA_VOLUME_MAX, nValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_COORDINATE_SYSTEM_SIZE_LARGE, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_SIZE_LARGE, systemValue);
+       this->GetValue(_SOUND_NOTIFICATION_VOLUME_MAX, nValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_NOTIFICATION_VOLUME_MAX, nValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL, systemValue);
+       this->GetValue(_SOUND_RINGTONE_VOLUME_MAX, nValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_RINGTONE_VOLUME_MAX, nValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_DESKTOPMODE, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_DESKTOPMODE, systemValue);
+       this->GetValue(_SOUND_SYSTEM_VOLUME_MAX, nValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_SYSTEM_VOLUME_MAX, nValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_SIZE_LARGE, bValue);
+       this->GetValue(_SPEECH_RECOGNITION, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_LARGE, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SPEECH_RECOGNITION, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_SIZE_NORMAL, bValue);
+       this->GetValue(_SPEECH_SYNTHESIS, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SPEECH_SYNTHESIS, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_SIZE_NORMAL_480_800, bValue);
+       this->GetValue(_TELEPHONY, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL_480_800, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _TELEPHONY, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_SIZE_NORMAL_720_1280, bValue);
+       this->GetValue(_USB_ACCESSORY, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL_720_1280, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_ACCESSORY, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_OUTPUT_HDMI, bValue);
+       this->GetValue(_USB_HOST, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_OUTPUT_HDMI, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_HOST, systemValue);
        reg.Flush();
 
-       this->GetValue(_SCREEN_OUTPUT_RCA, bValue);
+       this->GetValue(_USB_CLIENT, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_OUTPUT_RCA, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_CLIENT, systemValue);
        reg.Flush();
 
-       this->GetValue(_SHELL_APPWIDGET, bValue);
+       this->GetValue(_WIFI, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SHELL_APPWIDGET, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _WIFI, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_ACCELEROMETER, bValue);
+       this->GetValue(_WIFI_DIRECT, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_ACCELEROMETER, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _WIFI_DIRECT, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_ACCELEROMETER_WAKEUP, bValue);
+       this->GetValue(_NETWORK_PUSH, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_ACCELEROMETER_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _NETWORK_PUSH, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_BAROMETER, bValue);
+       this->GetValue(_SCREEN_SIZE_NORMAL, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_BAROMETER, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_BAROMETER_WAKEUP, bValue);
+       this->GetValue(_SCREEN_SIZE_LARGE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_BAROMETER_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_LARGE, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_GYROSCOPE, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_GYROSCOPE, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_SIZE_NORMAL, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_GYROSCOPE_WAKEUP, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_SIZE_LARGE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_GYROSCOPE_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_SIZE_LARGE, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_MAGNETOMETER, bValue);
+       this->GetValue(_SCREEN_SIZE_NORMAL_720_1280, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_MAGNETOMETER, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL_720_1280, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_MAGNETOMETER_WAKEUP, bValue);
+       this->GetValue(_SCREEN_SIZE_NORMAL_480_800, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_MAGNETOMETER_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_SIZE_NORMAL_480_800, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_PHOTOMETER, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_480X800, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PHOTOMETER, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_480X800, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_PHOTOMETER_WAKEUP, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_720X1280, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PHOTOMETER_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_720X1280, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_PROXIMITY, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_480X800, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PROXIMITY, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_480X800, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_PROXIMITY_WAKEUP, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_720X1280, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_PROXIMITY_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_PHYSICAL_LARGE_720X1280, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_TILTMETER, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_LOGICAL_NORMAL, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_TILTMETER, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_LOGICAL_NORMAL, systemValue);
        reg.Flush();
 
-       this->GetValue(_SENSOR_TILTMETER_WAKEUP, bValue);
+       this->GetValue(_SCREEN_COORDINATE_SYSTEM_LOGICAL_LARGE, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SENSOR_TILTMETER_WAKEUP, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_COORDINATE_SYSTEM_LOGICAL_LARGE, systemValue);
        reg.Flush();
 
-       this->GetValue(_SIP_VOIP, bValue);
-       if(bValue == true)
-               systemValue = _SYSTEM_CACHING_TRUE;
-       else
-               systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SIP_VOIP, systemValue);
+       this->GetValue(_BUID_STRING, systemValue);
+       reg.Flush();
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _BUID_STRING, systemValue);
        reg.Flush();
 
-       this->GetValue(_SPEECH_RECOGNITION, bValue);
+       this->GetValue(_TELEPHONY_MMS, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SPEECH_RECOGNITION, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _TELEPHONY_MMS, systemValue);
        reg.Flush();
 
-       this->GetValue(_SPEECH_SYNTHESIS, bValue);
+       this->GetValue(_TELEPHONY_SMS, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SPEECH_SYNTHESIS, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _TELEPHONY_SMS, systemValue);
        reg.Flush();
 
-       this->GetValue(_USB_ACCESSORY, bValue);
+
+       this->GetValue(_TELEPHONY_SMS_CBS, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_ACCESSORY, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _TELEPHONY_SMS_CBS, systemValue);
        reg.Flush();
 
-       this->GetValue(_USB_CLIENT, bValue);
+       this->GetValue(_GRAPHIC_ACCELERATION, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_CLIENT, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _GRAPHIC_ACCELERATION, systemValue);
        reg.Flush();
 
-       this->GetValue(_USB_HOST, bValue);
+       this->GetValue(_SCREEN_AUTO_ROTATION, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _USB_HOST, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SCREEN_AUTO_ROTATION, systemValue);
        reg.Flush();
 
-       this->GetValue(_VISION_FACE_RECOGNITION, bValue);
+       this->GetValue(_SHELL_APPWIDGET, bValue);
        if(bValue == true)
                systemValue = _SYSTEM_CACHING_TRUE;
        else
                systemValue = _SYSTEM_CACHING_FALSE;
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _VISION_FACE_RECOGNITION, systemValue);
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SHELL_APPWIDGET, systemValue);
        reg.Flush();
 
        this->GetValue(_VISION_IMAGE_RECOGNITION, bValue);
@@ -999,41 +1019,20 @@ _SystemInfo::CachingSystemInformation(void)
        reg.AddValue(_SYSTEM_CACHING_SECTION, _VISION_QRCODE_RECOGNITION, systemValue);
        reg.Flush();
 
-       this->GetValue(_BUILD_STRING, systemValue);
-       reg.Flush();
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _BUILD_STRING, systemValue);
-       reg.Flush();
-
-       r = this->GetValue(_DUID, sValue);
-       if(r != E_SUCCESS)
-       {
-               sValue.Append(L"ERROR");
-       }
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _DUID, sValue);
-       reg.Flush();
-
-       this->GetValue(_MODELNAME, sValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _MODELNAME, sValue);
-       reg.Flush();
-
-       this->GetValue(_PLATFORM_NAME, sValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _PLATFORM_NAME, sValue);
-       reg.Flush();
-
-       this->GetValue(_SOUND_MEDIA_VOLUME_MAX, nValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_MEDIA_VOLUME_MAX, nValue);
-       reg.Flush();
-
-       this->GetValue(_SOUND_NOTIFICATION_VOLUME_MAX, nValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_NOTIFICATION_VOLUME_MAX, nValue);
-       reg.Flush();
-
-       this->GetValue(_SOUND_RINGTONE_VOLUME_MAX, nValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_RINGTONE_VOLUME_MAX, nValue);
+       this->GetValue(_VISION_QRCODE_RECOGNITION, bValue);
+       if(bValue == true)
+               systemValue = _SYSTEM_CACHING_TRUE;
+       else
+               systemValue = _SYSTEM_CACHING_FALSE;
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _VISION_QRCODE_RECOGNITION, systemValue);
        reg.Flush();
 
-       this->GetValue(_SOUND_SYSTEM_VOLUME_MAX, nValue);
-       reg.AddValue(_SYSTEM_CACHING_SECTION, _SOUND_SYSTEM_VOLUME_MAX, nValue);
+       this->GetValue(_SECURE_ELEMENT, bValue);
+       if(bValue == true)
+               systemValue = _SYSTEM_CACHING_TRUE;
+       else
+               systemValue = _SYSTEM_CACHING_FALSE;
+       reg.AddValue(_SYSTEM_CACHING_SECTION, _SECURE_ELEMENT, systemValue);
        reg.Flush();
 
        this->GetValue(_MODELNAME, sValue);
@@ -1063,7 +1062,7 @@ _SystemInfo::GetValue(const String& key, String& value)
        {
                bool supported = false;
                SysLog(NID_SYS, "It trys to get DUID from telephony.");
-               this->GetValue(_NETWORK_TELEPHONY, supported);
+               this->GetValue(_TELEPHONY, supported);
                if(supported == true)
                {
                        r = _DeviceId::GetId(value, 0);
@@ -1071,7 +1070,7 @@ _SystemInfo::GetValue(const String& key, String& value)
                else
                {
                        SysLog(NID_SYS, "It trys to get DUID from wifi.");
-                       this->GetValue(_NETWORK_WIFI, supported);
+                       this->GetValue(_WIFI, supported);
                        if(supported == true)
                        {
                                r = _DeviceId::GetId(value, 1);
@@ -1079,7 +1078,7 @@ _SystemInfo::GetValue(const String& key, String& value)
                        else
                        {
                                SysLog(NID_SYS, "It trys to get DUID from bluetooth.");
-                               this->GetValue(_NETWORK_BLUETOOTH, supported);
+                               this->GetValue(_BLUETOOTH, supported);
                                if(supported == true)
                                {
                                        r = _DeviceId::GetId(value, 2);
@@ -1101,7 +1100,46 @@ _SystemInfo::GetValue(const String& key, String& value)
                r = StringUtil::Utf8ToString(pValue, value);
                SysTryCatch(NID_SYS, r == E_SUCCESS, r = E_SYSTEM, r, "[%s] StringUtil::Utf8ToString It is failed", GetErrorMessage(r));
        }
-       else if (key == _BUILD_STRING)
+       else if (key == _INPUT_KEYBOARD_LAYOUT)
+       {
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_KEYBOARD_TYPE, &pValue);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_KEYBOARD_TYPE\"It is failed");
+
+               if(pValue == null)
+               {
+                       value.Clear();
+                       return E_SUCCESS;
+               }
+
+               r = StringUtil::Utf8ToString(pValue, value);
+               SysTryCatch(NID_SYS, r == E_SUCCESS, r = E_SYSTEM, r, "[%s] StringUtil::Utf8ToString It is failed", GetErrorMessage(r));
+
+               if(key == _INPUT_KEYBOARD_LAYOUT)
+               {
+                       value.ToLowerCase();
+               }
+       }
+       else if (key == _PLATFORM_VERSION)
+       {
+               char* pPlatformVersion = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_TIZEN_VERSION, &pPlatformVersion);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_PLATFORM_NAME\"It is failed");
+
+               r = StringUtil::Utf8ToString(pPlatformVersion, value);
+               SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString It is failed", GetErrorMessage(r));
+               free(pPlatformVersion);
+               return r;
+
+       }
+       else if (key == _PLATFORM_NAME)
+       {
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_PLATFORM_NAME, &pValue);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_PLATFORM_NAME\"It is failed");
+
+               r = StringUtil::Utf8ToString(pValue, value);
+               SysTryCatch(NID_SYS, r == E_SUCCESS, r = E_SYSTEM, r, "[%s] StringUtil::Utf8ToString It is failed", GetErrorMessage(r));
+       }
+       else if (key == _BUID_STRING)
        {
                ret = system_info_get_value_string(SYSTEM_INFO_KEY_BUILD_STRING, &pValue);
                SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_TIZEN_VERSION_STRING\"It is failed");
@@ -1111,53 +1149,131 @@ _SystemInfo::GetValue(const String& key, String& value)
        }
        else
        {
-               String tizenKey;
-               key.SubString(7, tizenKey);
+               r = GetFromRegistry(key, value);
 
-               ClearLastResult();
-               unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
-               r = GetLastResult();
-               SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
-               int ret = system_info_get_platform_string(systemKey.get(), &pValue);
+               if (IsFailed(r))
+               {
+                       String tizenKey;
+                       key.SubString(7, tizenKey);
 
-               SysTryReturnResult(NID_SYS, ret == 0, E_OBJ_NOT_FOUND, "It is failed to get system information %ls from configration file.", key.GetPointer());
+                       ClearLastResult();
+                       unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
+                       r = GetLastResult();
+                       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
+                       int ret = system_info_get_external_string(systemKey.get(), &pValue);
 
-               r = StringUtil::Utf8ToString(pValue, value);
-               free(pValue);
-               pValue = null;
+                       SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] system_info_get_external_string : %ls It is failed", key.GetPointer());
+
+                       r = StringUtil::Utf8ToString(pValue, value);
+                       free(pValue);
+                       pValue = null;
+               }
+
+               SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_OBJ_NOT_FOUND, "It is failed to get the key[%ls]", key.GetPointer());
 
                return r;
        }
-
 CATCH:
        if(pValue != null)
        {
                free(pValue);
        }
-
        return r;
-
 }
 
 result
 _SystemInfo::GetValue(const String& key, int& value)
 {
-       int ret = 0;
+       int ret = -1;
        result r = E_SUCCESS;
 
        SysLog(NID_SYS, "Request Key is %ls.", key.GetPointer());
+       if (key == _SCREEN_BPP)
+       {
+               int screenBitsPerPixel = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_BITS_PER_PIXEL, &screenBitsPerPixel);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY__SCREEN_BITS_PER_PIXEL");
+               value = screenBitsPerPixel;
+       }
+       else if (key == _SCREEN_HEIGHT)
+       {
+               int screenHeight = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_HEIGHT, &screenHeight);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY__SCREEN_HEIGHT");
+               value = screenHeight;
+       }
+       else if (key == _SCREEN_WIDTH)
+       {
+               int screenWidth = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_WIDTH, &screenWidth);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY__SCREEN_WIDTH");
+               value = screenWidth;
+       }
+       else if (key == _SCREEN_DPI)
+       {
+               int screenDPI = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_DPI, &screenDPI);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY__SCREEN_DPI");
+               value = screenDPI;
+       }
+       else if (key == _SOUND_SYSTEM_VOLUME_MAX)
+       {
+               int maxVolume = 0;
+               int ret = sound_manager_get_max_volume(SOUND_TYPE_SYSTEM, &maxVolume);
+               SysTryReturnResult(NID_SYS, ret == SOUND_MANAGER_ERROR_NONE, E_SYSTEM, "It is failed to get the max volume");
+               value = maxVolume;
+       }
+       else if (key == _SOUND_MEDIA_VOLUME_MAX)
+       {
+               int maxVolume = 0;
+               int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &maxVolume);
+               SysTryReturnResult(NID_SYS, ret == SOUND_MANAGER_ERROR_NONE, E_SYSTEM, "It is failed to get the max volume");
+
+               value = maxVolume;
+       }
+       else if (key == _SOUND_RINGTONE_VOLUME_MAX)
+       {
+               int maxVolume = 0;
+               int ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE, &maxVolume);
+               SysTryReturnResult(NID_SYS, ret == SOUND_MANAGER_ERROR_NONE, E_SYSTEM, "It is failed to get the max volume");
+
+               value = maxVolume;
+       }
+       else if (key == _SOUND_NOTIFICATION_VOLUME_MAX)
+       {
+               int maxVolume = 0;
+               int ret = sound_manager_get_max_volume(SOUND_TYPE_NOTIFICATION, &maxVolume);
+               SysTryReturnResult(NID_SYS, ret == SOUND_MANAGER_ERROR_NONE, E_SYSTEM, "It is failed to get the max volume");
+               value = maxVolume;
+       }
+       else if (key == _MULTIPOINTTOUCH_POINTCOUNT)
+       {
+               int multiPointTouchCount = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_MULTI_POINT_TOUCH_COUNT, &multiPointTouchCount);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the ISYSTEM_INFO_KEY_MULTI_POINT_TOUCH_COUNT");
+               value = multiPointTouchCount;
+       }
+       else
+       {
+               r = GetFromRegistry(key, value);
+
+               if (IsFailed(r))
+               {
+                       String tizenKey;
+                       key.SubString(7, tizenKey);
 
-       String tizenKey;
-       key.SubString(7, tizenKey);
+                       ClearLastResult();
+                       unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
+                       r = GetLastResult(); 
+                       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
+                       int ret = system_info_get_external_int(systemKey.get(), &value);
 
-       ClearLastResult();
-       unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
-       r = GetLastResult();
-       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
-       ret = system_info_get_platform_int(systemKey.get(), &value);
+                       SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] system_info_get_external_int : %ls It is failed", key.GetPointer());
+                       r = E_SUCCESS;
+               }
 
-       SysTryReturnResult(NID_SYS, ret == 0, E_OBJ_NOT_FOUND, "It is failed to get system information %ls from configration file.", key.GetPointer());
-       r = E_SUCCESS;
+               SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_OBJ_NOT_FOUND, "It is failed to get the key[%ls]", key.GetPointer());
+       }
 
        return r;
 }
@@ -1170,34 +1286,830 @@ _SystemInfo::GetValue(const String& key, bool& value)
 
        SysLog(NID_SYS, "Request Key is %ls.", key.GetPointer());
 
-       if (key == _SCREEN_DESKTOPMODE)
+       if (key == _BLUETOOTH)
        {
-               value = false;
+               bool bluetoothSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_BLUETOOTH_SUPPORTED, &bluetoothSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_BLUETOOTH_SUPPORTED.");
+               value = bluetoothSupported;
        }
-       else if (key == _USB_CLIENT)
+       else if (key == _CAMERA)
+       {
+               int cameraCount = 0;
+               ret = system_info_get_value_int(SYSTEM_INFO_KEY_CAMERA_COUNT, &cameraCount);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY__CAMERA_COUNT");
+
+               if (cameraCount > 0)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _CAMERA_FRONT)
+       {
+               bool frontCameraSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_FRONT_CAMERA_SUPPORTED, &frontCameraSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FRONT_CAMERA_SUPPORTED.");
+               value = frontCameraSupported;
+       }
+       else if (key == _CAMERA_FRONT_FLASH)
+       {
+               bool frontCameraFlashSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_FRONT_CAMERA_FLASH_SUPPORTED, &frontCameraFlashSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FRONT_CAMERA_FLASH_SUPPORTED.");
+               value = frontCameraFlashSupported;
+       }
+       else if (key == _CAMERA_BACK)
+       {
+               bool backCameraSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_BACK_CAMERA_SUPPORTED, &backCameraSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FRONT_CAMERA_SUPPORTED.");
+               value = backCameraSupported;
+       }
+       else if ( key == _CAMERA_BACK_FLASH)
+       {
+               bool backCameraFlashSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_BACK_CAMERA_FLASH_SUPPORTED, &backCameraFlashSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FRONT_CAMERA_FLASH_SUPPORTED.");
+               value = backCameraFlashSupported;
+       }
+       else if (key == _DATABASE_ENCRYPTION)
+       {
+               struct utsname device_name;
+               ret = uname(&device_name);
+               SysTryReturnResult(NID_SYS, ret == 0, E_SYSTEM, "It is failed to get device information by uname.");
+               SysLog(NID_SYS, "Readed uname is sysname:%s, nodename:%s, release:%s, version:%s, machine:%s", device_name.sysname, device_name.nodename, device_name.release, device_name.version, device_name.machine);
+
+               if(strcasestr(device_name.machine, "emulated") != null)
+               {
+                       value = true;
+               }
+               else
+               {
+                       void* handle = dlopen(_DATABASE_LIBRARY_PATH, RTLD_NOW);
+                       SysTryReturnResult(NID_SYS, handle != null, E_SYSTEM, "It is failed to open database library file");
+                       void* function = dlsym(handle, _DATABASE_ENCRYPTION_SYMBOL);
+                       if (function != null)
+                       {
+                               value = true;
+                       }
+                       else
+                       {
+                               value = false;
+                       }
+                       dlclose(handle);
+               }
+       }
+       else if (key == _LOCATION)
+       {
+               bool gpsSupported = false;
+               bool wpsSupported = false;
+
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_GPS_SUPPORTED, &gpsSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_GPS_SUPPORTED.");
+               wpsSupported = location_manager_is_supported_method(LOCATIONS_METHOD_WPS);
+
+               if(gpsSupported == true || wpsSupported == true)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _LOCATION_GPS)
+       {
+               bool gpsSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_GPS_SUPPORTED, &gpsSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_GPS_SUPPORTED.");
+               value = gpsSupported;
+       }
+       else if (key == _LOCATION_WPS)
+       {
+               bool wpsSupported = false;
+               wpsSupported = location_manager_is_supported_method(LOCATIONS_METHOD_WPS);
+               value = wpsSupported;
+       }
+       else if (key == _MICROPHONE)
+       {
+               bool micSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_MICROPHONE_SUPPORTED, &micSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_MICROPHONE_SUPPORTED.");
+               value = micSupported;
+       }
+       else if (key == _PLATFORM_CORE_CPU_ARCH_ARMV6)
+       {
+               char* cpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_CPU_ARCH, &cpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_CPU_ARCH\"It is failed");
+
+               if(cpu != NULL && strcmp(cpu, "ARMv6") == 0)
+               {
+                       value = true;
+                       free(cpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_CPU_ARCH_ARMV7)
+       {
+               char* cpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_CPU_ARCH, &cpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_CPU_ARCH\"It is failed");
+
+               if(cpu != NULL && strcmp(cpu, "ARMv7") == 0)
+               {
+                       value = true;
+                       free(cpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_CPU_ARCH_X86)
+       {
+               char* cpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_CPU_ARCH, &cpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_CPU_ARCH\"It is failed");
+
+               if(cpu != NULL && strcmp(cpu, "x86") == 0)
+               {
+                       value = true;
+                       free(cpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_FPU_ARCH_VFPV2)
+       {
+               char* fpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_FPU_ARCH, &fpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_fPU_ARCH\"It is failed");
+
+               if(fpu != NULL && strcmp(fpu, "vfpv2") == 0)
+               {
+                       value = true;
+                       free(fpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_FPU_ARCH_VFPV3)
+       {
+               char* fpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_FPU_ARCH, &fpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_fPU_ARCH\"It is failed");
+
+               if(fpu != NULL && strcmp(fpu, "vfpv3") == 0)
+               {
+                       value = true;
+                       free(fpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_FPU_ARCH_SSE2)
+       {
+               char* fpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_FPU_ARCH, &fpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_fPU_ARCH\"It is failed");
+
+               if(fpu != NULL && strcmp(fpu, "sse2") == 0)
+               {
+                       value = true;
+                       free(fpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_FPU_ARCH_SSE3)
+       {
+               char* fpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_FPU_ARCH, &fpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_fPU_ARCH\"It is failed");
+
+               if(fpu != NULL && strcmp(fpu, "sse3") == 0)
+               {
+                       value = true;
+                       free(fpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _PLATFORM_CORE_FPU_ARCH_SSSE3)
+       {
+               char* fpu = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_CORE_FPU_ARCH, &fpu);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_CORE_fPU_ARCH\"It is failed");
+
+               if(fpu != NULL && strcmp(fpu, "ssse3") == 0)
+               {
+                       value = true;
+                       free(fpu);
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _WIFI)
+       {
+               bool wifiSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_WIFI_SUPPORTED, &wifiSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_WIFI_SUPPORTED.");
+               value = wifiSupported;
+       }
+       else if (key == _WIFI_DIRECT)
+       {
+               bool wifiSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_WIFI_DIRECT_SUPPORTED, &wifiSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_WIFI_DIRECT_SUPPORTED.");
+               value = wifiSupported;
+       }
+       else if (key == _FMRADIO)
+       {
+               bool fmRadioSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_FMRADIO_SUPPORTED, &fmRadioSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FMRADIO_SUPPORTED.");
+               value = fmRadioSupported;
+       }
+       else if (key == _SCREEN_OUTPUT_RCA)
+       {
+               bool rcaSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_RCA_SUPPORTED, &rcaSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_RCA_SUPPORTED.");
+               value = rcaSupported;
+       }
+       else if (key == _SCREEN_OUTPUT_HDMI)
+       {
+               bool hdmiSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_HDMI_SUPPORTED, &hdmiSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_HDMI_SUPPORTED.");
+               value = hdmiSupported;
+       }
+       else if (key == _MULTIPOINTTOUCH_PINCHZOOM)
+       {
+               bool pinchZoomSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_FEATURE_PINCH_ZOOM_SUPPORTED, &pinchZoomSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_PINCHZOOM_SUPPORTED.");
+               value = pinchZoomSupported;
+       }
+       else if (key == _NETWORK_NFC)
+       {
+               bool nfcSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_NFC_SUPPORTED, &nfcSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_NFC_SUPPORTED.");
+               SysLog(NID_SYS, "SYSTEM_INFO_KE_NFC_SUPPORTED is [%d].", nfcSupported);
+               value = nfcSupported;
+       }
+       else if (key == _NETWORK_NFC_RESERVED_PUSH)
+       {
+               bool nfcRservedPushSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_NFC_RESERVED_PUSH_SUPPORTED, &nfcRservedPushSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_NFC_RESERVED_PUSH_SUPPORTED.");
+               SysLog(NID_SYS, "SYSTEM_INFO_KE_NFC_RESERVED_PUSH_SUPPORTED is [%d].", nfcRservedPushSupported);
+               value = nfcRservedPushSupported;
+       }
+       else if (key == _SECURE_ELEMENT)
+       {
+               value = File::IsFileExist(_SECURE_ELEMENT_BIN);
+       }
+       else if (key == _TELEPHONY || key == _TELEPHONY_SMS)
+       {
+               if(File::IsFileExist(_TELEPHONY_SERVICE_BIN) == true)
+               {
+                       value = true;
+               }
+               else
+               {
+                       SysLog(NID_SYS, "current device is not support telephony.");
+                       value = false;
+               }
+       }
+       else if(key == _TELEPHONY_MMS)
+       {
+               bool mmsSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_MMS_SUPPORTED, &mmsSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_MMS_SUPPORTED.");
+               SysLog(NID_SYS, "SYSTEM_INFO_KEY_MMS_SUPPORTED is [%d].", mmsSupported);
+               value = mmsSupported;
+       }
+       else if(key == _TELEPHONY_SMS_CBS)
+       {
+               bool smsCbsSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_CBS_SUPPORTED, &smsCbsSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_CBS_SUPPORTED.");
+               SysLog(NID_SYS, "SYSTEM_INFO_KEY_CBS_SUPPORTED is [%d].", smsCbsSupported);
+               value = smsCbsSupported;
+       }
+       else if (key == _TELEPHONY_SERVICE_GSM || key == _TELEPHONY_SERVICE_GPRS || key == _TELEPHONY_SERVICE_EDGE
+                       || key == _TELEPHONY_SERVICE_UMTS || key == _TELEPHONY_SERVICE_HSDPA || key == _TELEPHONY_SERVICE_HSUPA
+                       || key == _TELEPHONY_SERVICE_HSPA || key == _TELEPHONY_SERVICE_LTE || key == _TELEPHONY_SERVICE_CDMA)
+       {
+               String telephonyInfo;
+               char* pValue = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_NETWORK_TYPE, &pValue);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_NETWORK_TYPE\"It is failed");
+               SysLog(NID_SYS, "SYSTEM_INFO_KEY_NETWORK_TYPE is [%s].", pValue);
+
+               if(pValue == null)
+               {
+                       value = false;
+                       return E_SUCCESS;
+               }
+
+               r = StringUtil::Utf8ToString(pValue, telephonyInfo);
+               if(r != E_SUCCESS)
+               {
+                       free(pValue);
+                       return E_SYSTEM;
+               }
+               telephonyInfo.ToLowerCase();
+               if(key == _TELEPHONY_SERVICE_GSM && telephonyInfo.Contains("gsm"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_GPRS && telephonyInfo.Contains("gprs"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_EDGE && telephonyInfo.Contains("edge"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_UMTS && telephonyInfo.Contains("umts"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_HSDPA && telephonyInfo.Contains("hsdpa"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_HSUPA && telephonyInfo.Contains("hsupa"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_HSPA && telephonyInfo.Contains("hspa"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_LTE && telephonyInfo.Contains("lte"))
+               {
+                       value = true;
+               }
+               else if(key == _TELEPHONY_SERVICE_CDMA && telephonyInfo.Contains("cdma"))
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+               free(pValue);
+       }
+       else if (key == _SENSOR_BAROMETER)
+       {
+               bool barometerSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_BAROMETER_SENSOR_SUPPORTED, &barometerSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_BAROMETER_SENSOR_SUPPORTED.");
+               value = barometerSupported;
+       }
+       else if (key == _SENSOR_BAROMETER_WAKEUP)
+       {
+               bool barometerWakeupSupported = false;
+               ret = sf_is_wakeup_supported(BAROMETER_SENSOR);
+               if(ret == 0)
+               {
+                       barometerWakeupSupported = true;
+               }
+               value = barometerWakeupSupported;
+       }
+       else if (key == _SENSOR_ACCELEROMETER)
+       {
+               bool accelerometerSupported = false;
+               ret = sensor_is_supported(SENSOR_ACCELEROMETER, &accelerometerSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_ACCELEROMETER");
+               value = accelerometerSupported;
+       }
+       else if (key == _SENSOR_ACCELEROMETER_WAKEUP)
+       {
+               bool accelerometerWakeupSupported = false;
+               ret = sf_is_wakeup_supported(ACCELEROMETER_SENSOR);
+               if(ret == 0)
+               {
+                       accelerometerWakeupSupported = true;
+               }
+               value = accelerometerWakeupSupported;
+       }
+       else if (key == _SENSOR_MAGNETOMETER)
+       {
+               bool magnetometerSupported = false;
+               ret = sensor_is_supported(SENSOR_MAGNETIC, &magnetometerSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_MAGNETOMETER");
+               value = magnetometerSupported;
+       }
+       else if (key == _SENSOR_MAGNETOMETER_WAKEUP)
+       {
+               bool magnetometerWakeupSupported = false;
+               ret = sf_is_wakeup_supported(GEOMAGNETIC_SENSOR);
+               if(ret == 0)
+               {
+                       magnetometerWakeupSupported = true;
+               }
+               value = magnetometerWakeupSupported;
+       }
+       else if (key == _SENSOR_PHOTOMETER)
+       {
+               bool lightSupported = false;
+               ret = sensor_is_supported(SENSOR_LIGHT, &lightSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_PHOTOMETER");
+               value = lightSupported;
+       }
+       else if (key == _SENSOR_PHOTOMETER_WAKEUP)
+       {
+               bool photometerWakeupSupported = false;
+               ret = sf_is_wakeup_supported(LIGHT_SENSOR);
+               if(ret == 0)
+               {
+                       photometerWakeupSupported = true;
+               }
+               value = photometerWakeupSupported;
+       }
+       else if (key == _SENSOR_GYROSCOPE)
+       {
+               bool gyroscopeSupported = false;
+               ret = sensor_is_supported(SENSOR_GYROSCOPE, &gyroscopeSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_GYROSCOPE");
+               value = gyroscopeSupported;
+       }
+       else if (key == _SENSOR_GYROSCOPE_WAKEUP)
+       {
+               bool gyroscopeWakeupSupported = false;
+               ret = sf_is_wakeup_supported(GYROSCOPE_SENSOR);
+               if(ret == 0)
+               {
+                       gyroscopeWakeupSupported = true;
+               }
+               value = gyroscopeWakeupSupported;
+       }
+       else if (key == _SENSOR_PROXIMITY)
+       {
+               bool proximitySupported = false;
+               ret = sensor_is_supported(SENSOR_PROXIMITY, &proximitySupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_PROXIMITY");
+               value = proximitySupported;
+       }
+       else if (key == _SENSOR_PROXIMITY_WAKEUP)
+       {
+               bool proximityWakeupSupported = false;
+               ret = sf_is_wakeup_supported(PROXIMITY_SENSOR);
+               if(ret == 0)
+               {
+                       proximityWakeupSupported = true;
+               }
+               value = proximityWakeupSupported;
+       }
+       else if (key == _SENSOR_TILTMETER)
+       {
+               bool magnetometerSupported = false;
+               ret = sensor_is_supported(SENSOR_MAGNETIC, &magnetometerSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_MAGNETOMETER");
+
+               bool accelerometerSupported = false;
+               ret = sensor_is_supported(SENSOR_ACCELEROMETER, &accelerometerSupported);
+               SysTryReturnResult(NID_SYS, ret == SENSOR_ERROR_NONE, E_SYSTEM, "It is failed to get the SENSOR_ACCELEROMETER");
+
+               if(magnetometerSupported == true && accelerometerSupported == true)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _SENSOR_TILTMETER_WAKEUP)
+       {
+               int magnetic = 0;
+               int accelerometer = 0;
+               magnetic = sf_is_wakeup_supported(GEOMAGNETIC_SENSOR);
+               accelerometer = sf_is_wakeup_supported(ACCELEROMETER_SENSOR);
+               if(magnetic == 0 && accelerometer == 0)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _OPENGLES)
+       {
+               char* pOpenglVersion = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_OPENGLES_VERSION, &pOpenglVersion);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_OPENGLES_VERSION\"It is failed");
+
+               if(pOpenglVersion == NULL)
+               {
+                       value = false;
+               }
+               else
+               {
+                       if(strlen(pOpenglVersion) >0)
+                       {
+                               value = true;
+                       }
+                       else
+                       {
+                               value = false;
+                       }
+                       free(pOpenglVersion);
+               }
+       }
+       else if (key == _OPENGLES_VERSION_1_1)
+       {
+               char* pOpenglVersion = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_OPENGLES_VERSION, &pOpenglVersion);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_OPENGLES_VERSION\"It is failed");
+
+               if(pOpenglVersion == NULL)
+               {
+                       value = false;
+               }
+               else
+               {
+                       if(strcmp(pOpenglVersion, "1.1") != -1)
+                       {
+                               value = true;
+                       }
+                       else
+                       {
+                               value = false;
+                       }
+                       free(pOpenglVersion);
+               }
+       }
+       else if (key == _OPENGLES_VERSION_2_0)
+       {
+               char* pOpenglVersion = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_OPENGLES_VERSION, &pOpenglVersion);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_OPENGLES_VERSION\"It is failed");
+
+               if(pOpenglVersion == NULL)
+               {
+                       value = false;
+               }
+               else
+               {
+                       if(strcmp(pOpenglVersion + strlen(pOpenglVersion) - 3, "2.0") != -1)
+                       {
+                               value = true;
+                       }
+                       else
+                       {
+                               value = false;
+                       }
+                       free(pOpenglVersion);
+               }
+       }
+       else if(key == _OPENGLES_TEXTUREFORMAT_UTC || key == _OPENGLES_TEXTUREFORMAT_PTC || key == _OPENGLES_TEXTUREFORMAT_ETC
+                       || key == _OPENGLES_TEXTUREFORMAT_3DC || key == _OPENGLES_TEXTUREFORMAT_ATC || key == _OPENGLES_TEXTUREFORMAT_PVRTC)
+       {
+               int ret = 0;
+               String openglesTexture;
+
+               char* pTextureFormat = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_OPENGLES_TEXTURE_FORMAT, &pTextureFormat);
+
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE && pTextureFormat, E_SYSTEM, "system_info_get_value_string : \"SYSTEM_INFO_KEY_OPENGLES_VERSION\"It is failed");
+
+               r = StringUtil::Utf8ToString(pTextureFormat, openglesTexture);
+
+               if (r != E_SUCCESS)
+               {
+                       free(pTextureFormat);
+                       SysLog(NID_SYS, "Fail to convert string");
+               }
+
+               openglesTexture.ToUpperCase();
+               if (key == _OPENGLES_TEXTUREFORMAT_UTC && openglesTexture.Contains(L"UTC") == true)
+               {
+                       value = true;
+               }
+               else if (key == _OPENGLES_TEXTUREFORMAT_PTC && openglesTexture.Contains(L"PTC") == true)
+               {
+                       value = true;
+               }
+               else if (key == _OPENGLES_TEXTUREFORMAT_ETC && openglesTexture.Contains(L"ETC") == true)
+               {
+                       value = true;
+               }
+               else if (key == _OPENGLES_TEXTUREFORMAT_3DC && openglesTexture.Contains(L"3DC") == true)
+               {
+                       value = true;
+               }
+               else if (key == _OPENGLES_TEXTUREFORMAT_ATC && openglesTexture.Contains(L"ATC") == true)
+               {
+                       value = true;
+               }
+               else if (key == _OPENGLES_TEXTUREFORMAT_PVRTC && openglesTexture.Contains(L"PVRTC") == true)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _SCREEN_DESKTOPMODE)
+       {
+               value = false;
+       }
+       else if (key == _SPEECH_RECOGNITION)
+       {
+               bool speechRecognitionSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_SPEECH_RECOGNITION_SUPPORTED, &speechRecognitionSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_SPEECH_RECOGNITION_SUPPORTED.");
+               value = speechRecognitionSupported;
+       }
+       else if (key == _SPEECH_SYNTHESIS)
+       {
+               value = File::IsFileExist(_TTS_LIB);
+       }
+       else if (key == _SIP_VOIP)
+       {
+               bool sipVoipSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_SIP_VOIP_SUPPORTED, &sipVoipSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_SIP_VOIP_SUPPORTED.");
+               value = sipVoipSupported;
+       }
+       else if (key == _USB_HOST)
+       {
+               bool usbHostSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_USB_HOST_SUPPORTED, &usbHostSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_USB_HOST_SUPPORTED.");
+               value = usbHostSupported;
+       }
+       else if (key == _USB_CLIENT)
        {
                value = true;
        }
-       else
+       else if (key == _USB_ACCESSORY)
        {
-               String tizenKey;
-               key.SubString(7, tizenKey);
+               bool usbExternalAccessorySupported = false;
+               bool usbOspAccessorytSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_USB_ACCESSORY_SUPPORTED, &usbExternalAccessorySupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_USB_HOST_SUPPORTED.");
 
-               ClearLastResult();
-               unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
-               r = GetLastResult(); 
-               SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
+               usbOspAccessorytSupported = File::IsFileExist(_ACCESSORY_LIB);
 
-               bool supported = false;
-               ret = system_info_get_platform_bool(systemKey.get(), &supported);
-               SysTryReturnResult(NID_SYS, ret == 0, E_OBJ_NOT_FOUND, "It is failed to get system information %ls from configration file.", key.GetPointer());
-               value = supported;
+               if(usbOspAccessorytSupported == true || usbExternalAccessorySupported == true)
+               {
+                       value = true;
+               }
+               else
+               {
+                       value = false;
+               }
+       }
+       else if (key == _INPUT_KEYBOARD)
+       {
+               char* pKeyboardType = null;
+               ret = system_info_get_value_string(SYSTEM_INFO_KEY_KEYBOARD_TYPE, &pKeyboardType);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_KEYBOARD_TYPE\"It is failed");
+
+               value = false;
+               if(pKeyboardType != null)
+               {
+                       if(strlen(pKeyboardType) > 0)
+                       {
+                               value = true;
+                       }
+               }
+               free(pKeyboardType);
+       }
+       else if (key == _INPUT_OPTIONKEY)
+       {
+               value = true;
+       }
+       else if (key == _NETWORK_PUSH)
+       {
+               value = File::IsFileExist(_NETWORK_PUSH_BIN);
+       }
+       else if (key == _VISION_IMAGE_RECOGNITION)
+       {
+               value = File::IsFileExist(_AR_ENGINE_LIB);
+       }
+       else if (key == _VISION_QRCODE_GENERATION)
+       {
+               value = File::IsFileExist(_AR_ENGINE_LIB);
+       }
+       else if (key == _VISION_QRCODE_RECOGNITION)
+       {
+               value = File::IsFileExist(_AR_ENGINE_LIB);
+       }
+       else if (key == _VISION_FACE_RECOGNITION)
+       {
+               value = File::IsFileExist(_AR_ENGINE_LIB);
+       }
+       else if (key == _GRAPHIC_ACCELERATION)
+       {
+               bool graphicAccelerationSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_GRAPHICS_HWACCEL_SUPPORTED, &graphicAccelerationSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_GRAPHICS_HWACCEL_SUPPORTED value.");
+               value = graphicAccelerationSupported;
+       }
+       else if (key == _SCREEN_SIZE_NORMAL_480_800)
+       {
+               //TODO: Update is required.
+               r = GetFromRegistry(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_480X800, value);
+               SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_OBJ_NOT_FOUND, "It is failed to get the key[%ls]", key.GetPointer());
+       }
+       else if (key == _SCREEN_SIZE_NORMAL_720_1280)
+       {
+               //TODO: Update is required.
+               r = GetFromRegistry(_SCREEN_COORDINATE_SYSTEM_PHYSICAL_NORMAL_720X1280, value);
+               SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_OBJ_NOT_FOUND, "It is failed to get the key[%ls]", key.GetPointer());
+       }
+       else if(key == _SCREEN_AUTO_ROTATION)
+       {
+               bool autoRotationSupported = false;
+               ret = system_info_get_value_bool(SYSTEM_INFO_KEY_FEATURE_AUTO_ROTATION_SUPPORTED, &autoRotationSupported);
+               SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "It is failed to get the SYSTEM_INFO_KEY_FEATURE_AUTO_ROTATION_SUPPORTED value.");
+               value = autoRotationSupported;
+       }
+       else if(key == _SHELL_APPWIDGET)
+       {
+               value = _PackageManagerImpl::GetInstance()->IsPackageInstalled("gi2qxenosh");
+       }
+       else
+       {
+               r = GetFromRegistry(key, value);
+
+               if (IsFailed(r))
+               {
+                       String tizenKey;
+                       key.SubString(7, tizenKey);
+
+                       ClearLastResult();
+                       unique_ptr< char[] > systemKey(_StringConverter::CopyToCharArrayN(tizenKey));
+                       r = GetLastResult();
+                       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::StringToUtf8N It is failed", GetErrorMessage(r));
+
+                       bool featureIsSupported = false;
+                       int ret = system_info_get_external_bool(systemKey.get(), &featureIsSupported);
+                       value = featureIsSupported;
+                       SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] system_info_get_external_bool : %ls It is failed", key.GetPointer());
+               }
        }
 
        return E_SUCCESS;
 }
 
 result
+_SystemInfo::GetPlatformVersion(String& platformVersion)
+{
+       result r = E_SUCCESS;
+       char* pPlatformVersion = null;
+       int ret = system_info_get_value_string(SYSTEM_INFO_KEY_TIZEN_VERSION, &pPlatformVersion);
+       SysTryReturnResult(NID_SYS, ret == SYSTEM_INFO_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] system_info_get_value_string : \"SYSTEM_INFO_KEY_TIZEN_VERSION_NAME\"It is failed");
+
+       r = StringUtil::Utf8ToString(pPlatformVersion, platformVersion);
+       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString It is failed", GetErrorMessage(r));
+       free(pPlatformVersion);
+       return r;
+}
+
+result
+_SystemInfo::GetNativeApiVersion(String& nativeApiVersion)
+{
+       return GetFromRegistry(_PLATFORM_NATIVE_API_VERSION, nativeApiVersion);
+}
+
+result
+_SystemInfo::GetWebApiVersion(String& webApiVersion)
+{
+       return GetFromRegistry(_PLATFORM_WEB_API_VERSION, webApiVersion);
+}
+
+result
 _SystemInfo::OnRequestOccured(AppId appId, ArrayList* request, ArrayList* response)
 {
        result r = E_SUCCESS;
@@ -1275,4 +2187,72 @@ _SystemInfo::OnRequestOccured(AppId appId, ArrayList* request, ArrayList* respon
        return E_SUCCESS;
 }
 
+result
+_SystemInfo::GetFromRegistry(const String& key, String& value)
+{
+       result r = E_SUCCESS;
+       _RegistryImpl _reg;
+       String valStr;
+
+       r = _reg.Construct(_REGISTRY_PATH, REG_OPEN_READ_ONLY, null);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " RegistryImpl construct It is failed");
+
+       r = _reg.GetValue(_SYSTEM_INFO_SESSION, key, valStr);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " Registry GetValue[%ls] is failed", key.GetPointer());
+
+       if(valStr == L"true" || valStr == L"false")
+       {
+               return E_OBJ_NOT_FOUND;
+       }
+       else
+       {
+               value = valStr;
+       }
+
+       return E_SUCCESS;
+}
+
+result
+_SystemInfo::GetFromRegistry(const String& key, int& value)
+{
+       result r = E_SUCCESS;
+       _RegistryImpl _reg;
+       String valStr;
+       r = _reg.Construct(_REGISTRY_PATH, REG_OPEN_READ_ONLY, null);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " RegistryImpl construct It is failed");
+
+       r = _reg.GetValue(_SYSTEM_INFO_SESSION, key, valStr);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " Registry GetValue is failed");
+
+       r = Integer::Parse(valStr, value);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " Registry GetValue[%ls] is failed", key.GetPointer());
+       return E_SUCCESS;
+}
+
+result
+_SystemInfo::GetFromRegistry(const String& key, bool& value)
+{
+       result r = E_SUCCESS;
+       _RegistryImpl _reg;
+       String valStr;
+       r = _reg.Construct(_REGISTRY_PATH, REG_OPEN_READ_ONLY, null);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " RegistryImpl construct is failed");
+
+       r = _reg.GetValue(_SYSTEM_INFO_SESSION, key, valStr);
+       SysTryReturnResult(NID_SYS, !IsFailed(r), r, " Registry GetValue[%ls] is failed", key.GetPointer());
+
+       if(valStr == L"true")
+       {
+               value = true;
+       }
+       else if(valStr == L"false")
+       {
+               value = false;
+       }
+       else
+       {
+               return E_OBJ_NOT_FOUND;
+       }
+       return E_SUCCESS;
+}
 } } // Tizen::System
index bc24aff..59b08f4 100644 (file)
@@ -53,8 +53,20 @@ public:
 
        result GetValue(const Tizen::Base::String& key, bool& value);
 
+       result GetPlatformVersion(Tizen::Base::String& platformVersion);
+
+       result GetNativeApiVersion(Tizen::Base::String& nativeApiVersion);
+
+       result GetWebApiVersion(Tizen::Base::String& webApiVersion);
+
        result OnRequestOccured(Tizen::App::AppId appId, Tizen::Base::Collection::ArrayList* request, Tizen::Base::Collection::ArrayList* response);
 
+private:
+       result GetFromRegistry(const Tizen::Base::String& key, Tizen::Base::String& value);
+
+       result GetFromRegistry(const Tizen::Base::String& key, int& value);
+
+       result GetFromRegistry(const Tizen::Base::String& key, bool& value);
 };
 
 } } // Tizen::System