add duid ipc mode
authordavid_kim31 <david_kim31@samsung.com>
Tue, 6 Aug 2013 12:35:05 +0000 (21:35 +0900)
committerdavid_kim31 <david_kim31@samsung.com>
Tue, 6 Aug 2013 12:41:38 +0000 (21:41 +0900)
Change-Id: I4edfb843f95e910260b4b1665cc32f3133561f72
Signed-off-by: david_kim31 <david_kim31@samsung.com>
src/system/FSys_SystemInfoImpl.cpp

index 28d20e0..1baa395 100644 (file)
@@ -448,37 +448,42 @@ _SystemInfoImpl::GetSysInfo(const String& key, String& value)
 
                if(r != E_SUCCESS)
                {
-                       int ret = 0;
-                       TapiHandle* handle = null;
-                       int time_count = 0;
-                       int status = 0;
-
-                       handle = tel_init(null);
-                       if(handle != null)
-                       {
-                               while(time_count < 30) //Wait 30 second.
-                               {
-                                       ret = tel_check_modem_power_status(handle, &status);
-                                       SysLog(NID_SYS, "Modem check result is %d, status is %d.", handle, status);
-                                       if(ret != TAPI_API_SUCCESS)
-                                       {
-                                               SysLogException(NID_SYS, E_SYSTEM, "It is failed to get Modem status.");
-                                               tel_deinit(handle);
-                                               return E_SYSTEM;
-                                       }
-
-                                       if(status == 0)
-                                       {
-                                               break;
-                                       }
-
-                                       usleep(1000000);
-                                       time_count++;
-                               }
-                               tel_deinit(handle);
-                       }
-                       _SystemClient* pSystemClient = _SystemClient::GetInstance();
-                       r = pSystemClient->GetValue(tizenKey, value);
+                       ArrayList requestMessage;
+                       ArrayList responseMessage;
+
+                       _CommunicationDispatcherClient* pCommunicationDispatcherClient = _CommunicationDispatcherClient::GetInstance();
+
+                       _IpcClient* pIpcClient = pCommunicationDispatcherClient->GetIpcClient();
+                       SysTryReturn(NID_SYS, pIpcClient != null, E_OUT_OF_MEMORY, r, "It is failed to create IPC instance.");
+
+                       requestMessage.Construct();
+                       responseMessage.Construct();
+
+                       String serviceId(_SYSTEM_SERVICE_ID);
+                       String commandId(L"osp.system.command.get.duid.internal");
+
+                       requestMessage.Add(serviceId);
+                       requestMessage.Add(commandId);
+
+                       unique_ptr<IoService_Request> pMsg(new (std::nothrow) IoService_Request(requestMessage, &responseMessage));
+                       SysTryReturnResult(NID_SYS, pMsg != null, E_OUT_OF_MEMORY, "It is failed to create Ipc message");
+
+                       r = pIpcClient->SendRequest(pMsg.get());
+                       SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "It is failed to send ipc message. [%s]", GetErrorMessage(r));
+
+                       String* pResult = (String*)responseMessage.GetAt(_SYSTEM_RESPONSE_DATA);
+                       String* pDuid = (String*)responseMessage.GetAt(_SYSTEM_RESPONSE_DATA+1);
+
+                       SysTryReturn(NID_SYS, pResult != null, r = E_SYSTEM, r, "It is failed to receive result on IPC response message.");
+                       SysTryReturn(NID_SYS, pDuid != null, r = E_SYSTEM, r, "It is failed to receive IMEI value on IPC response message.");
+
+                       SysTryReturn(NID_SYS, *pResult != _SYSTEM_RESULT_PRIVILEGED, r = E_PRIVILEGE_DENIED, r, "It is failed to get privilege.");
+                       SysTryReturn(NID_SYS, *pResult == _SYSTEM_RESULT_OK, r = E_SYSTEM, r, "It is failed to get DUID value.");
+
+                       value = *pDuid;
+
+CATCH:
+                       responseMessage.RemoveAll(true);
                }
        }
        else