namespace {
+typedef struct {
+ common::PostCallback fun;
+} CallbackData;
+
+const std::string kTimeout = "timeout";
+
#define CHECK_EXIST(args, name) \
if (args.end() == args.find(name)) { \
return common::TypeMismatchError(std::string(name) + " is required argument"); \
return common::UnknownError("Not implemented");
}
+void IotconPlatformInfoCb(iotcon_platform_info_h platform_info,
+ iotcon_error_e result, void *user_data) {
+ ScopeLogger();
+
+ CallbackData* data = static_cast<CallbackData*>(user_data);
+ picojson::value v{picojson::object{}};
+ common::TizenResult ret = common::TizenSuccess();
+
+ if (IOTCON_ERROR_NONE != result) {
+ ret = IotconUtils::ConvertIotconError(result);
+ } else {
+ ret = IotconUtils::PlatformInfoToJson(platform_info,&v.get<picojson::object>());
+ }
+
+ data->fun(ret, v);
+ delete data;
+}
+
common::TizenResult IotconInstance::ClientGetPlatformInfo(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>();
+ std::string con_type = args.find(kConnectivityType)->second.get<std::string>();
+ iotcon_connectivity_type_e con_type_e = IotconUtils::ToConnectivityType(con_type);
+
+ CallbackData* data = new CallbackData{SimplePost(token)};
+
+ auto result = IotconUtils::ConvertIotconError(
+ iotcon_get_platform_info(host.c_str(), con_type_e, IotconPlatformInfoCb,
+ data));
+
+ if (!result) {
+ delete data;
+ LogAndReturnTizenError(result);
+ }
+
+ return common::TizenSuccess();
}
common::TizenResult IotconInstance::ServerCreateResource(const picojson::object& args) {
common::TizenResult IotconInstance::SetTimeout(const picojson::object& args) {
ScopeLogger();
- CHECK_EXIST(args, "timeout");
+ CHECK_EXIST(args, kTimeout);
- int timeout = static_cast<int>(args.find("timeout")->second.get<double>());
+ int timeout = static_cast<int>(args.find(kTimeout)->second.get<double>());
auto result = IotconUtils::ConvertIotconError(iotcon_set_timeout(timeout));
if (!result) {
const std::string kHexPrefix = "0x";
+const std::string kPlatformId = "platformId";
+const std::string kManufacturerName = "manufacturerName";
+const std::string kManufacturerUrl = "manufacturerUrl";
+const std::string kModelNumber = "modelNumber";
+const std::string kManufactureDate = "manufactureDate";
+const std::string kPlatformVersion = "platformVersion";
+const std::string kOperatingSystemVersion = "operatingSystemVersion";
+const std::string kHardwareVersion = "hardwareVersion";
+const std::string kFirmwareVersion = "firmwareVersion";
+const std::string kSupportUrl = "supportUrl";
+const std::string kSystemTime = "systemTime";
+
using common::TizenResult;
using common::TizenSuccess;
return TizenSuccess();
}
+common::TizenResult IotconUtils::PlatformInfoGetProperty(iotcon_platform_info_h platform,
+ iotcon_platform_info_e property_e,
+ const std::string& name,
+ picojson::object* out) {
+ ScopeLogger();
+
+ char* property = nullptr;
+ auto result = ConvertIotconError(iotcon_platform_info_get_property(platform,
+ property_e,
+ &property));
+ if (!result || !property) {
+ LogAndReturnTizenError(result, ("iotcon_platform_info_get_property() failed"));
+ }
+ out->insert(std::make_pair(name, picojson::value{property}));
+
+ return TizenSuccess();
+}
+
+common::TizenResult IotconUtils::PlatformInfoToJson(iotcon_platform_info_h platform,
+ picojson::object* out) {
+ ScopeLogger();
+
+ {
+ // platformId
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_ID,
+ kPlatformId, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // manufacturerName
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_MANUF_NAME,
+ kManufacturerName, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // manufacturerUrl
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_MANUF_URL,
+ kManufacturerUrl, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // modelNumber
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_MODEL_NUMBER,
+ kModelNumber, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // manufactureDate
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_DATE_OF_MANUF,
+ kManufactureDate, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // platformVersion
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_PLATFORM_VER,
+ kPlatformVersion, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // operatingSystemVersion
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_OS_VER,
+ kOperatingSystemVersion, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // hardwareVersion
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_HARDWARE_VER,
+ kHardwareVersion, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // firmwareVersion
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_FIRMWARE_VER,
+ kFirmwareVersion, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // supportUrl
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_SUPPORT_URL,
+ kSupportUrl, out);
+ if (!result) {
+ return result;
+ }
+ }
+
+ {
+ // systemTime
+ auto result = PlatformInfoGetProperty(platform, IOTCON_PLATFORM_INFO_SYSTEM_TIME,
+ kSystemTime, out);
+ if (!result) {
+ return result;
+ }
+ }
+ return TizenSuccess();
+}
+
common::TizenResult IotconUtils::ConvertIotconError(int error) {
switch (error) {
case IOTCON_ERROR_NONE:
IOTCON_QOS_E
}
+iotcon_connectivity_type_e IotconUtils::ToConnectivityType(const std::string& e) {
+ ScopeLogger();
+
+ IOTCON_CONNECTIVITY_TYPE_E
+}
+
#undef X
#undef XD
extern const std::string kUriPath;
extern const std::string kStates;
extern const std::string kId;
+extern const std::string kHostAddress;
+extern const std::string kConnectivityType;
struct ResourceInfo {
long long id;
picojson::array* out);
static common::TizenResult QueryToJson(iotcon_query_h query,
picojson::object* out);
+ static common::TizenResult PlatformInfoToJson(iotcon_platform_info_h platform,
+ picojson::object* out);
+ static common::TizenResult PlatformInfoGetProperty(iotcon_platform_info_h platform,
+ iotcon_platform_info_e property,
+ const std::string& name,
+ picojson::object* out);
static common::TizenResult RepresentationFromResource(const ResourceInfoPtr& resource,
const picojson::value& states,
static std::string FromInterface(iotcon_interface_e e);
static iotcon_interface_e ToInterface(const std::string& e);
+ static iotcon_connectivity_type_e ToConnectivityType(const std::string& e);
static iotcon_qos_e ToQos(const std::string& e);
};