Update change log and spec for wrt-plugins-tizen_0.4.49
[framework/web/wrt-plugins-tizen.git] / src / Systeminfo / Systeminfo.cpp
index 984e53d..8f49a1c 100755 (executable)
@@ -27,7 +27,7 @@
 
 using namespace WrtDeviceApis::CommonsJavaScript;
 using namespace WrtDeviceApis::Commons;
-using namespace DPL;
+#define SIM_VALUE_MAX    4
 
 namespace DeviceAPI {
 namespace Systeminfo {
@@ -62,6 +62,14 @@ void DisplayValueCallback(keynode_t *node, void* event_ptr)
     }
 }
 
+void OrientationValueVconfCallback(keynode_t *node, void *event_ptr)
+{
+    LoggerD("enter");
+    if(event_ptr) {
+        ((Systeminfo*)event_ptr)->getWatchValue(WATCH_TYPE_DEVICE_ORIENTATION);
+    }    
+}
+
 void NetworkTypeValueCallback(connection_type_e type, void* event_ptr)
 {
     if(event_ptr) {
@@ -94,7 +102,6 @@ static Eina_Bool CpuValueCallback(void* event_ptr)
 
 void OrientationValueCallback(unsigned int event_type, sensor_event_data_t *event , void *event_ptr)
 {
-    LoggerD("enter");
     if(event_ptr) {
         ((Systeminfo*)event_ptr)->getWatchValue(WATCH_TYPE_DEVICE_ORIENTATION);
     }
@@ -102,10 +109,111 @@ void OrientationValueCallback(unsigned int event_type, sensor_event_data_t *even
 
 void localeChangedCallback(runtime_info_key_e key, void* event_ptr)
 {
-    LoggerD("enter");
     if(event_ptr) {
         ((Systeminfo*)event_ptr)->getWatchValue(WATCH_TYPE_LOCALE);
-    }    
+    }
+}
+
+void SimCphsValueCallback(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       TelSimAccessResult_t access_rt = (TelSimAccessResult_t)result;
+       TelSimCphsNetName_t *cphsInfo = (TelSimCphsNetName_t *)data;
+
+    LoggerD("access_rt : " << access_rt);
+
+    if (user_data != NULL){
+        SysteminfoAsyncPendingEvent *pendingEvent = (SysteminfoAsyncPendingEvent *)user_data;
+        Systeminfo *systeminfo = (Systeminfo *)pendingEvent->getThisObject();
+        EventGetSysteminfoPtr event = pendingEvent->getEvent();
+
+        if (access_rt == TAPI_SIM_ACCESS_SUCCESS) {
+            if (cphsInfo->full_name) {
+            systeminfo->setSimValue(SIM_CPHS_VALUE, (char *)cphsInfo->full_name, event);
+            } else if (cphsInfo->short_name) {
+                systeminfo->setSimValue(SIM_CPHS_VALUE, (char *)cphsInfo->short_name, event);
+            } else {
+                systeminfo->setSimValue(SIM_CPHS_VALUE, NULL, event);                    
+            }
+        } else {
+            systeminfo->setSimValue(SIM_CPHS_VALUE, NULL, event);        
+        }
+
+        delete pendingEvent;
+        pendingEvent = NULL;
+        user_data = NULL;
+    }
+}
+
+void SimMsisdnValueCallback(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       TelSimAccessResult_t access_rt = (TelSimAccessResult_t)result;
+       TelSimMsisdnList_t *msisdnInfo = (TelSimMsisdnList_t *)data;
+
+    LoggerD("access_rt : " << access_rt);
+
+    if (user_data != NULL){
+        SysteminfoAsyncPendingEvent *pendingEvent = (SysteminfoAsyncPendingEvent *)user_data;
+        Systeminfo *systeminfo = (Systeminfo *)pendingEvent->getThisObject();
+        EventGetSysteminfoPtr event = pendingEvent->getEvent();
+
+        if (access_rt == TAPI_SIM_ACCESS_SUCCESS) {
+            systeminfo->setSimValue(SIM_MSISDN_VALUE, (char *)msisdnInfo->list[0].num, event);
+        } else {
+            systeminfo->setSimValue(SIM_MSISDN_VALUE, NULL, event);        
+        }
+
+        delete pendingEvent;
+        pendingEvent = NULL;
+        user_data = NULL;
+    }
+}
+
+void SimIccidValueCallback(TapiHandle *handle, int result, void *data, void *user_data)
+{
+    TelSimAccessResult_t access_rt = (TelSimAccessResult_t)result;
+       TelSimIccIdInfo_t *iccidInfo = (TelSimIccIdInfo_t *)data;
+
+    LoggerD("access_rt : " << access_rt);
+
+    if (user_data != NULL){
+        SysteminfoAsyncPendingEvent *pendingEvent = (SysteminfoAsyncPendingEvent *)user_data;
+        Systeminfo *systeminfo = (Systeminfo *)pendingEvent->getThisObject();
+        EventGetSysteminfoPtr event = pendingEvent->getEvent();
+
+        if (access_rt == TAPI_SIM_ACCESS_SUCCESS) {
+            systeminfo->setSimValue(SIM_ICCID_VALUE, (char *)iccidInfo->icc_num, event);
+        } else {
+            systeminfo->setSimValue(SIM_ICCID_VALUE, NULL, event);        
+        }
+
+        delete pendingEvent;
+        pendingEvent = NULL;
+        user_data = NULL;
+    }
+}
+
+void SimSpnValueCallback(TapiHandle *handle, int result, void *data, void *user_data)
+{
+    TelSimAccessResult_t access_rt = (TelSimAccessResult_t)result;
+    TelSimSpn_t *spnInfo = (TelSimSpn_t *)data;
+
+    LoggerD("access_rt : " << access_rt);
+
+    if (user_data != NULL){
+        SysteminfoAsyncPendingEvent *pendingEvent = (SysteminfoAsyncPendingEvent *)user_data;
+        Systeminfo *systeminfo = (Systeminfo *)pendingEvent->getThisObject();
+        EventGetSysteminfoPtr event = pendingEvent->getEvent();
+        
+        if (access_rt == TAPI_SIM_ACCESS_SUCCESS) {
+            systeminfo->setSimValue(SIM_SPN_VALUE, (char *)spnInfo->spn, event);
+        } else {
+            systeminfo->setSimValue(SIM_ICCID_VALUE, NULL, event);        
+        }
+
+        delete pendingEvent;
+        pendingEvent = NULL;
+        user_data = NULL;
+    }
 }
 
 }
@@ -172,6 +280,11 @@ Systeminfo::Systeminfo() : m_networkRegist(REGIST_NOT),
             LoggerD("failed");
         }
     }
+
+    m_tapiHandle = tel_init(0);
+    if (m_tapiHandle == NULL) {
+        LoggerE ("tel init fail");
+    }
 }
 
 Systeminfo::~Systeminfo()
@@ -196,6 +309,10 @@ Systeminfo::~Systeminfo()
         LoggerD("Network Client deregistration failed");
     }
 
+    if (m_tapiHandle != NULL) {
+        tel_deinit(m_tapiHandle);
+    }
+
        state = sf_stop(m_sensorHandle);
        LoggerD("handle 1  state = " << state);
 
@@ -212,6 +329,7 @@ DeviceCapabilitiesPropertiesPtr Systeminfo::getCapabilities()
 
 void Systeminfo::get(const EventGetSysteminfoPtr& event)
 {
+    event->setTapiHandle((void*)m_tapiHandle);
     EventRequestReceiver<EventGetSysteminfo>::PostRequest(event);
 }
 
@@ -224,6 +342,7 @@ void Systeminfo::watch(const EventWatchSysteminfoPtr& event)
     }
 
     event->setSysteminfoPtr(this);
+    event->setTapiHandle((void*)m_tapiHandle);
     m_EventMgrPtr->addEvent(event, event->getWatchType());
 
     EventRequestReceiver<EventWatchSysteminfo>::PostRequest(event);
@@ -267,6 +386,7 @@ void Systeminfo::clearWatch(const long id)
                     vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, CellularNetworkValueCallback);
                     vconf_ignore_key_changed(VCONFKEY_TELEPHONY_CELLID, CellularNetworkValueCallback);
                     vconf_ignore_key_changed(VCONFKEY_TELEPHONY_LAC, CellularNetworkValueCallback);
+                    vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, CellularNetworkValueCallback);
                     if (m_networkRegist == REGIST_CELLULAR) {
                         connection_unset_ip_address_changed_cb(m_connectionHandle);
                         m_networkRegist = REGIST_NOT;
@@ -295,6 +415,7 @@ void Systeminfo::clearWatch(const long id)
                 break;
             case WATCH_TYPE_DEVICE_ORIENTATION:
                 if ((m_EventMgrPtr->getEventDeviceOrientationList()).size() == 1) {
+                    vconf_ignore_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, OrientationValueVconfCallback);
                     int state = sf_unregister_event(m_sensorHandle, ACCELEROMETER_EVENT_ROTATION_CHECK);
                     if (state < 0) {
                         LoggerD("sf_unregister_event fail to gather data\n");
@@ -383,17 +504,11 @@ void Systeminfo::getWatchValue(const int watchType)
         for (EventStorageList::iterator it = eventList.begin(); it != eventList.end(); it++) {
         int storageCnt = 1;
         int sdcardState = 0;
-        int usbhostState = 0;
         if(vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sdcardState) == 0) {
             if(sdcardState == VCONFKEY_SYSMAN_MMC_MOUNTED) {
                 storageCnt++;
             }
         }
-        if(vconf_get_int(VCONFKEY_SYSMAN_USB_HOST_STATUS, &usbhostState) == 0) {
-            if(usbhostState == VCONFKEY_SYSMAN_USB_HOST_CONNECTED) {
-                storageCnt++;
-            }
-        }
         LoggerD("storage cnt : " << storageCnt);
             (*it)->getWatchValue(storageCnt);
         }
@@ -459,10 +574,93 @@ JSValueRef Systeminfo::getCpuValue(JSContextRef context)
     return JSCpuInfo::createJSObject(context, cpuPtr);
 }
 
+void Systeminfo::setSimValue(const int simAttribute, char* value, const EventGetSysteminfoPtr &event)
+{
+    int ret = 0;
+    if (!value) {
+        ret = event->addSimValueCnt();
+    } else {
+        ret = event->setSimValue(simAttribute, value);
+    }
+
+    if (ret == SIM_VALUE_MAX) {
+        event->makeSimObject();
+        EventRequestReceiver<EventGetSysteminfo>::ManualAnswer(event);
+    }
+}
+
 void Systeminfo::OnRequestReceived(const EventGetSysteminfoPtr& event)
 {
     LoggerD("enter");
-    event->processGetValue((void *)m_connectionHandle);
+
+    if (strcmp(event->getProperty(), (const char*)"SIM") == 0) {
+        int cardChanged = 0;
+        TelSimCardStatus_t simCardState;
+        TelSimImsiInfo_t imsi;
+        char* simState = NULL;
+
+        event->switchToManualAnswer();
+        event->setCancelAllowed(true);        
+        
+        if (tel_get_sim_init_info(m_tapiHandle, &simCardState, &cardChanged) == TAPI_API_SUCCESS) {
+            switch(simCardState) {
+                case TAPI_SIM_STATUS_CARD_NOT_PRESENT :
+                case TAPI_SIM_STATUS_CARD_REMOVED : 
+                    simState = strdup("ABSENT");
+                    break;
+                case TAPI_SIM_STATUS_SIM_INITIALIZING :
+                    simState = strdup("INITIALIZING");
+                    break;
+                case TAPI_SIM_STATUS_SIM_INIT_COMPLETED :
+                    simState = strdup("READY");
+                    break;
+                case TAPI_SIM_STATUS_SIM_PIN_REQUIRED :
+                    simState = strdup("PIN_REQUIRED");
+                    break;
+                case TAPI_SIM_STATUS_SIM_PUK_REQUIRED :
+                    simState = strdup("PUK_REQUIRED");
+                    break;
+                case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED :
+                case TAPI_SIM_STATUS_CARD_BLOCKED :
+                    simState = strdup("SIM_LOCKED");
+                    break;
+                case TAPI_SIM_STATUS_SIM_NCK_REQUIRED :
+                case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED :
+                    simState = strdup("NETWORK_LOCKED");
+                    break;
+                default:
+                    simState = strdup("UNKNOWN");
+                    break;
+            }
+            LoggerD("simState : " << simState);
+            event->setSimState(simState);
+            if (simState)
+                free(simState);
+            if(strcmp(simState, "READY") == 0) {
+                if (tel_get_sim_imsi(m_tapiHandle, &imsi) == TAPI_API_SUCCESS) {
+                    LoggerD("mcc : " << imsi.szMcc << \r" mnc : " << imsi.szMnc << " msin : " << imsi.szMsin);
+                    event->setSimImsi(imsi.szMcc, imsi.szMnc, imsi.szMsin);
+                } else {
+                    LoggerE("get fail sim imsi");
+                }
+                SysteminfoAsyncPendingEvent *cphsPendingEvent = new SysteminfoAsyncPendingEvent((void *)this, event);
+                tel_get_sim_cphs_netname(m_tapiHandle, SimCphsValueCallback, cphsPendingEvent);
+                SysteminfoAsyncPendingEvent *msisdnPendingEvent = new SysteminfoAsyncPendingEvent((void *)this, event);
+                tel_get_sim_msisdn(m_tapiHandle, SimMsisdnValueCallback, msisdnPendingEvent);
+                SysteminfoAsyncPendingEvent *iccidPendingEvent = new SysteminfoAsyncPendingEvent((void *)this, event);
+                tel_get_sim_iccid(m_tapiHandle, SimIccidValueCallback, iccidPendingEvent);
+                SysteminfoAsyncPendingEvent *spnPendingEvent = new SysteminfoAsyncPendingEvent((void *)this, event);
+                tel_get_sim_spn(m_tapiHandle, SimSpnValueCallback, spnPendingEvent);
+            } else {
+                event->makeSimObject();
+                EventRequestReceiver<EventGetSysteminfo>::ManualAnswer(event);
+            }
+        } else {
+            LoggerE("get fail sim state");
+        }
+    } else {
+        event->processGetValue((void *)m_connectionHandle);
+    }
 }
 
 void Systeminfo::OnRequestReceived(const EventWatchSysteminfoPtr& event)
@@ -504,6 +702,7 @@ void Systeminfo::OnRequestReceived(const EventWatchSysteminfoPtr& event)
                 vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, CellularNetworkValueCallback, (void *)this);
                 vconf_notify_key_changed(VCONFKEY_TELEPHONY_CELLID, CellularNetworkValueCallback, (void *)this);
                 vconf_notify_key_changed(VCONFKEY_TELEPHONY_LAC, CellularNetworkValueCallback, (void *)this);
+                vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, CellularNetworkValueCallback, (void *)this);                
                 if (m_networkRegist == REGIST_NOT) {
                     connection_set_ip_address_changed_cb(m_connectionHandle, NetworkValueCallback, (void *)this);
                     m_networkRegist = REGIST_CELLULAR;
@@ -531,6 +730,7 @@ void Systeminfo::OnRequestReceived(const EventWatchSysteminfoPtr& event)
         case WATCH_TYPE_DEVICE_ORIENTATION:
             LoggerD("regist sensor");
             if ((m_EventMgrPtr->getEventDeviceOrientationList()).size() == 1) {
+                vconf_notify_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, OrientationValueVconfCallback, (void *)this);
                 int state = sf_register_event(m_sensorHandle, ACCELEROMETER_EVENT_ROTATION_CHECK, NULL, OrientationValueCallback, (void *)this);
                 if (state < 0) {
                     LoggerD("sensor_register_cb fail to gather data");
@@ -1060,93 +1260,73 @@ PROPERTY_GET_SYSTEMINFO_DEFINITION(Cpu) {
 PROPERTY_GET_SYSTEMINFO_DEFINITION(Storage) {
     Converter converter(context);
     int sdcardState=0;
-    int usbhostState=0;
-    int storageCnt=0;
     struct statfs fs;
-    StoragePropertiesPtr internal(new StorageProperties());
-    StoragePropertiesPtr mmc(new StorageProperties());
-    StoragePropertiesPtr usbhost(new StorageProperties());
-    std::vector <JSObjectRef> storagelist;
     
     if (statfs(STORAGE_INTERNAL_PATH, &fs) < 0) {
         return JSValueMakeNull(context);
     }
-
-    internal->type = "INTERNAL";
-    internal->capacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_blocks;
-    internal->availableCapacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_bavail;
-    internal->isRemoveable = false;
-    internal->isRemovable = false;
-    storagelist.push_back(JSStorageInfo::createJSObject(context, internal));
-    storageCnt++;
-
-    if(vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sdcardState) == 0){
+    StoragePropertiesPtr storagePtr(new StorageProperties());
+    storagePtr->units[0].type = "INTERNAL";
+    storagePtr->units[0].capacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_blocks;
+    storagePtr->units[0].availableCapacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_bavail;
+    storagePtr->units[0].isRemoveable = false;
+    storagePtr->units[0].isRemovable = false;
+    storagePtr->cnt = 1;
+    LoggerD("type : " << storagePtr->units[0].type);
+    if(vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sdcardState) == 0) {
         if(sdcardState == VCONFKEY_SYSMAN_MMC_MOUNTED){
-            storageCnt++;
             if (statfs(STORAGE_SDCARD_PATH, &fs) < 0) {
                 return JSValueMakeNull(context);
             }
-            mmc->type = "MMC";
-            mmc->capacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_blocks;
-            mmc->availableCapacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_bavail;
-            mmc->isRemoveable = true;
-            mmc->isRemovable = true;
-            storagelist.push_back(JSStorageInfo::createJSObject(context, mmc));
+            storagePtr->units[1].type = "MMC";
+            storagePtr->units[1].capacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_blocks;
+            storagePtr->units[1].availableCapacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_bavail;
+            storagePtr->units[1].isRemoveable = false;
+            storagePtr->units[1].isRemovable = false;
+            storagePtr->cnt = 2;
+            LoggerD("type : " << storagePtr->units[1].type);            
         }
     }
+    return JSStorageInfo::createJSObject(context, storagePtr);  
 
-    if(vconf_get_int(VCONFKEY_SYSMAN_USB_HOST_STATUS, &usbhostState) == 0) {
-        if(usbhostState == VCONFKEY_SYSMAN_USB_HOST_CONNECTED) {
-            storageCnt++;
-            if (statfs(STORAGE_USBHOST_PATH, &fs) < 0)    {
-                return JSValueMakeNull(context);
-            }
-            usbhost->type = "USB_HOST";
-            usbhost->capacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_blocks;
-            usbhost->availableCapacity = (unsigned long long)fs.f_bsize * (unsigned long long)fs.f_bavail;
-            usbhost->isRemoveable = true;
-            usbhost->isRemovable = true;
-            storagelist.push_back(JSStorageInfo::createJSObject(context, usbhost));
-        }
-    }
-
-    return JSObjectMakeArray(context, storageCnt, storagelist.data(), NULL);
 }
 
 PROPERTY_GET_SYSTEMINFO_DEFINITION(Display) {
     Converter converter(context);
 
     DisplayPropertiesPtr display(new DisplayProperties());
-    int brightness=0, dotsPerInchX=0, dotsPerInchY=0, physicalW=0, physicalH=0, resolutionW=0, resolutionH=0;
+    int brightness=0, dotsPerInch=0, physicalW=0, physicalH=0;
+    bool screenSizeSmall = false, screenSizeBig = false;
 
     if(vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness) == 0) {
         display->brightness = (double)(brightness)/DISPLAY_BRIGHTNESS_DIVIDE_VALUE;
-        LoggerD("brightness : " << display->brightness);
     }
 
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_WIDTH, &resolutionW) == SYSTEM_INFO_ERROR_NONE) {
-        display->resolutionWidth = resolutionW;
-        LoggerD("resolutionWidth : " << display->resolutionWidth);
-    }
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_HEIGHT, &resolutionH) == SYSTEM_INFO_ERROR_NONE) {
-        display->resolutionHeight = resolutionH;
-        LoggerD("resolutionHeight : " << display->resolutionHeight);
+    if(system_info_get_platform_bool("tizen.org/feature/screen.size.normal.480.800", &screenSizeSmall) == SYSTEM_INFO_ERROR_NONE) {
+        if (screenSizeSmall) {
+            display->resolutionWidth = 480;
+            display->resolutionHeight = 800;
+        } else {
+            if (system_info_get_platform_bool("tizen.org/feature/screen.size.normal.720.1280", &screenSizeBig) == SYSTEM_INFO_ERROR_NONE) {
+                if (screenSizeBig) {
+                    display->resolutionWidth = 720;
+                    display->resolutionHeight = 1280;
+                }
+            }
+        }
     }
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_DPI, &dotsPerInchX) == SYSTEM_INFO_ERROR_NONE) {
-        display->dotsPerInchWidth = dotsPerInchX;
-        LoggerD("dotsPerInchWidth : " << display->dotsPerInchWidth);
+
+    if(system_info_get_platform_int("tizen.org/feature/screen.dpi", &dotsPerInch) == SYSTEM_INFO_ERROR_NONE) {
+        display->dotsPerInchWidth = dotsPerInch;
+        display->dotsPerInchHeight = dotsPerInch;        
     }
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_SCREEN_DPI, &dotsPerInchY) == SYSTEM_INFO_ERROR_NONE) {
-        display->dotsPerInchHeight = dotsPerInchY;
-        LoggerD("dotsPerInchHeight : " << display->dotsPerInchHeight);
+
+    if(system_info_get_value_int(SYSTEM_INFO_KEY_PHYSICAL_SCREEN_WIDTH, &physicalW) == SYSTEM_INFO_ERROR_NONE) {
+        display->physicalWidth = physicalW;
     }
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_PHYSICAL_SCREEN_HEIGHT, &physicalH) == SYSTEM_INFO_ERROR_NONE) {
+
+    if(system_info_get_value_int(SYSTEM_INFO_KEY_PHYSICAL_SCREEN_HEIGHT, &physicalH) == SYSTEM_INFO_ERROR_NONE) {
         display->physicalHeight = physicalH;
-        LoggerD("physicalHeight : " << display->physicalHeight);
-    }
-    if (system_info_get_value_int(SYSTEM_INFO_KEY_PHYSICAL_SCREEN_WIDTH, &physicalW) == SYSTEM_INFO_ERROR_NONE) {
-        display->physicalWidth = physicalW;
-        LoggerD("physicalWidth : " << display->physicalWidth);
     }
 
     return JSDisplayInfo::createJSObject(context, display);
@@ -1319,16 +1499,16 @@ PROPERTY_GET_SYSTEMINFO_DEFINITION(CellularNetwork) {
             connection_profile_destroy(profileHandle);
         }
     }
-
-       TIME_TRACER_ITEM_BEGIN("(cellular)imei", 0);
-    if (system_info_get_value_string(SYSTEM_INFO_KEY_MOBILE_DEVICE_ID, &imei) == SYSTEM_INFO_ERROR_NONE) {
-        if (imei) {
-            LoggerD("imei : " << imei);
-            cellularNetwork->imei = imei;
-            free(imei);
-        }
+   
+    imei = tel_get_misc_me_imei_sync((TapiHandle*)tapiHandle);
+    
+    if (imei != NULL) {
+        LoggerD("imei : " << imei);
+        cellularNetwork->imei = imei;
+        free(imei);
+    } else {
+        LoggerD("get fail imei");
     }
-       TIME_TRACER_ITEM_END("(cellular)imei", 0);
 
     return JSCellularNetworkInfo::createJSObject(context, cellularNetwork);
 }
@@ -1336,6 +1516,7 @@ PROPERTY_GET_SYSTEMINFO_DEFINITION(CellularNetwork) {
 PROPERTY_GET_SYSTEMINFO_DEFINITION(SIM) {
     Converter converter(context);
     SIMPropertiesPtr SIM(new SIMProperties());
+
     return JSSIMInfo::createJSObject(context, SIM);
 }
 
@@ -1346,6 +1527,15 @@ PROPERTY_GET_SYSTEMINFO_DEFINITION(DeviceOrientation) {
 
     unsigned long rotation = 0;
     int handleOrientaion = 0;
+    int isAutoRotation = 0;
+
+    if (vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &isAutoRotation) == 0) {
+        if (isAutoRotation) {
+            deviceOrientation->isAutoRotation = true;
+        } else {
+            deviceOrientation->isAutoRotation = false;
+        }
+    }
 
     handleOrientaion = sf_connect(ACCELEROMETER_SENSOR);
     LoggerD("handleOrientaion : " << handleOrientaion);
@@ -1406,7 +1596,7 @@ PROPERTY_GET_SYSTEMINFO_DEFINITION(Build) {
     char* manufacturer = NULL;
     char* buildVersion = NULL;
 
-    if (system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &model) == SYSTEM_INFO_ERROR_NONE) {
+    if(system_info_get_platform_string("tizen.org/system/model_name", &model) == SYSTEM_INFO_ERROR_NONE) {
         if (model != NULL) {
             LoggerD("model : " << model);
             Build->model = model;