From: Lukasz Bardeli Date: Wed, 10 Feb 2016 08:51:43 +0000 (+0100) Subject: [Iotcon] getDeviceInfo implemented X-Git-Tag: submit/tizen/20160212.103506^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=72745318ad256658cbdc20ea19b1532e422f271a;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Iotcon] getDeviceInfo implemented Change-Id: I4e77c21f289a6f7935e6d83bec4b259bc90db9fb Signed-off-by: Lukasz Bardeli --- diff --git a/src/iotcon/iotcon_instance.cc b/src/iotcon/iotcon_instance.cc index ae48cf21..73243eab 100644 --- a/src/iotcon/iotcon_instance.cc +++ b/src/iotcon/iotcon_instance.cc @@ -383,10 +383,47 @@ common::TizenResult IotconInstance::ClientRemovePresenceEventListener(const pico return common::UnknownError("Not implemented"); } +void IotconPDeviceInfoCb(iotcon_device_info_h device_info, + iotcon_error_e result, void *user_data) { + ScopeLogger(); + + CallbackData* data = static_cast(user_data); + picojson::value v{picojson::object{}}; + common::TizenResult ret = common::TizenSuccess(); + + if (IOTCON_ERROR_NONE != result) { + ret = IotconUtils::ConvertIotconError(result); + } else { + auto ret = IotconUtils::DeviceInfoToJson(device_info,&v.get()); + } + + data->fun(ret, v); + delete data; +} + common::TizenResult IotconInstance::ClientGetDeviceInfo(const picojson::object& args, const common::AsyncToken& token) { ScopeLogger(); - return common::UnknownError("Not implemented"); + + CHECK_EXIST(args, kHostAddress); + CHECK_EXIST(args, kConnectivityType); + + std::string host = args.find(kHostAddress)->second.get(); + std::string con_type = args.find(kConnectivityType)->second.get(); + iotcon_connectivity_type_e con_type_e = IotconUtils::ToConnectivityType(con_type); + + CallbackData* data = new CallbackData{SimplePost(token)}; + + auto result = IotconUtils::ConvertIotconError( + iotcon_get_device_info(host.c_str(), con_type_e, IotconPDeviceInfoCb, + data)); + + if (!result) { + delete data; + LogAndReturnTizenError(result); + } + + return common::TizenSuccess(); } void IotconPlatformInfoCb(iotcon_platform_info_h platform_info, diff --git a/src/iotcon/iotcon_utils.cc b/src/iotcon/iotcon_utils.cc index a22704a3..b91060e5 100644 --- a/src/iotcon/iotcon_utils.cc +++ b/src/iotcon/iotcon_utils.cc @@ -112,6 +112,11 @@ const std::string kFirmwareVersion = "firmwareVersion"; const std::string kSupportUrl = "supportUrl"; const std::string kSystemTime = "systemTime"; +const std::string kDeviceName = "deviceName"; +const std::string kSpecVersion = "specVersion"; +const std::string kOicDeviceId = "oicDeviceId"; +const std::string kDataModelVersion = "dataModelVersion"; + using common::TizenResult; using common::TizenSuccess; @@ -1236,6 +1241,67 @@ common::TizenResult IotconUtils::PlatformInfoToJson(iotcon_platform_info_h platf return TizenSuccess(); } +common::TizenResult IotconUtils::DeviceInfoGetProperty(iotcon_device_info_h device, + iotcon_device_info_e property_e, + const std::string& name, + picojson::object* out) { + ScopeLogger(); + + char* property = nullptr; + auto result = ConvertIotconError(iotcon_device_info_get_property(device, + property_e, + &property)); + if (!result || !property) { + LogAndReturnTizenError(result, ("iotcon_device_info_get_property() failed")); + } + out->insert(std::make_pair(name, picojson::value{property})); + + return TizenSuccess(); +} + +common::TizenResult IotconUtils::DeviceInfoToJson(iotcon_device_info_h device, + picojson::object* out) { + ScopeLogger(); + + { + // deviceName + auto result = DeviceInfoGetProperty(device, IOTCON_DEVICE_INFO_NAME, + kDeviceName, out); + if (!result) { + return result; + } + } + + { + // specVersion + auto result = DeviceInfoGetProperty(device, IOTCON_DEVICE_INFO_SPEC_VER, + kSpecVersion, out); + if (!result) { + return result; + } + } + + { + // oicDeviceId + auto result = DeviceInfoGetProperty(device, IOTCON_DEVICE_INFO_ID, + kOicDeviceId, out); + if (!result) { + return result; + } + } + + { + // dataModelVersion + auto result = DeviceInfoGetProperty(device, IOTCON_DEVICE_INFO_DATA_MODEL_VER, + kDataModelVersion, out); + if (!result) { + return result; + } + } + + return TizenSuccess(); +} + common::TizenResult IotconUtils::ConvertIotconError(int error) { switch (error) { case IOTCON_ERROR_NONE: diff --git a/src/iotcon/iotcon_utils.h b/src/iotcon/iotcon_utils.h index 780bfe5c..efe13f23 100644 --- a/src/iotcon/iotcon_utils.h +++ b/src/iotcon/iotcon_utils.h @@ -99,6 +99,12 @@ class IotconUtils { iotcon_platform_info_e property, const std::string& name, picojson::object* out); + static common::TizenResult DeviceInfoToJson(iotcon_device_info_h device, + picojson::object* out); + static common::TizenResult DeviceInfoGetProperty(iotcon_device_info_h platform, + iotcon_device_info_e property, + const std::string& name, + picojson::object* out); static common::TizenResult RepresentationFromResource(const ResourceInfoPtr& resource, const picojson::value& states,