From: Lukasz Bardeli Date: Wed, 8 Feb 2017 07:56:47 +0000 (+0100) Subject: [Systeminfo] change statfs to storage_get_(internal/external)_memory_size X-Git-Tag: submit/tizen_3.0/20170208.081148~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=522e3c12425e788746300d31d078933ef38b8795;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Systeminfo] change statfs to storage_get_(internal/external)_memory_size [Verification] code compiles without error, TCT passrate 100% Change-Id: I41e0b078d4005528b0a6e2db411357b0052fc580 Signed-off-by: Lukasz Bardeli --- diff --git a/src/systeminfo/systeminfo_properties_manager.cc b/src/systeminfo/systeminfo_properties_manager.cc index 9d87daa1..cfaa7841 100644 --- a/src/systeminfo/systeminfo_properties_manager.cc +++ b/src/systeminfo/systeminfo_properties_manager.cc @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include "systeminfo/systeminfo_manager.h" #include "systeminfo/systeminfo_device_capability.h" @@ -1156,14 +1156,14 @@ PlatformResult SysteminfoPropertiesManager::ReportMemory(picojson::object* out) return PlatformResult(ErrorCode::NO_ERROR); } -static void CreateStorageInfo(const std::string& type, struct statfs& fs, picojson::object* out) { +static void CreateStorageInfo(const std::string& type, struct statvfs& fs, picojson::object* out) { LoggerD("Entered"); out->insert(std::make_pair("type", picojson::value(type))); out->insert(std::make_pair("capacity", picojson::value(std::to_string( - static_cast(fs.f_bsize) * + static_cast(fs.f_frsize) * static_cast(fs.f_blocks))))); out->insert(std::make_pair("availableCapacity", picojson::value(std::to_string( - static_cast(fs.f_bsize) * + static_cast(fs.f_frsize) * static_cast(fs.f_bavail))))); bool isRemovable = (type == kTypeInternal) ? false : true; out->insert(std::make_pair("isRemovable", picojson::value(isRemovable))); @@ -1186,7 +1186,7 @@ static std::string FromStorageTypeToStringType(common::StorageType type) { PlatformResult SysteminfoPropertiesManager::ReportStorage(picojson::object* out) { LoggerD("Entered"); - struct statfs fs; + struct statvfs fs; picojson::value result = picojson::value(picojson::array()); picojson::array& array = result.get(); @@ -1197,20 +1197,25 @@ PlatformResult SysteminfoPropertiesManager::ReportStorage(picojson::object* out) LoggerD("Storages found %d", storages.size()); for (auto storage : storages) { if (storage->state() == common::StorageState::kMounted) { - if (statfs(storage->path().c_str(), &fs) < 0) { - LoggerE("Storage unit %s not detected", storage->name().c_str()); - return PlatformResult(ErrorCode::UNKNOWN_ERR, "Storage unit not detected"); - } - array.push_back(picojson::value(picojson::object())); - picojson::object& external_obj = array.back().get(); - CreateStorageInfo(FromStorageTypeToStringType(storage->type()), fs, &external_obj); - //TODO change implementation to support all types of storages and not limited number if (common::StorageType::kInternal == storage->type()) { + if (storage_get_internal_memory_size(&fs) < 0) { + LoggerE("Storage unit %s not detected", storage->name().c_str()); + return PlatformResult(ErrorCode::UNKNOWN_ERR, "There are no storage units detected"); + } manager_.SetAvailableCapacityInternal(fs.f_bavail); } else if (common::StorageType::kMmc == storage->type()) { + if (storage_get_external_memory_size(&fs) < 0) { + LoggerE("Storage unit %s not detected", storage->name().c_str()); + return PlatformResult(ErrorCode::UNKNOWN_ERR, "MMC mounted, but not accessible"); + } manager_.SetAvailableCapacityMmc(fs.f_bavail); } + + array.push_back(picojson::value(picojson::object())); + picojson::object& external_obj = array.back().get(); + CreateStorageInfo(FromStorageTypeToStringType(storage->type()), fs, &external_obj); + } }