blob: 3a3e2a18703fcfbb128b974d856005fff8f4051f [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "diagnostics/cros_healthd/system/system_config.h"
#include <string>
#include <chromeos/chromeos-config/libcros_config/cros_config.h>
#include <base/files/file_util.h>
#include "diagnostics/cros_healthd/system/system_config_constants.h"
namespace diagnostics {
SystemConfig::SystemConfig(brillo::CrosConfigInterface* cros_config)
: cros_config_(cros_config), root_dir_("/") {}
SystemConfig::SystemConfig(brillo::CrosConfigInterface* cros_config,
const base::FilePath& root_dir)
: cros_config_(cros_config), root_dir_(root_dir) {}
SystemConfig::~SystemConfig() = default;
bool SystemConfig::FioSupported() {
return base::PathExists(root_dir_.AppendASCII(kFioToolPath));
}
bool SystemConfig::HasBacklight() {
std::string has_backlight;
cros_config_->GetString(kBacklightPropertiesPath, kHasBacklightProperty,
&has_backlight);
return has_backlight != "false";
}
bool SystemConfig::HasBattery() {
std::string psu_type;
cros_config_->GetString(kHardwarePropertiesPath, kPsuTypeProperty, &psu_type);
return psu_type != "AC_only";
}
bool SystemConfig::HasSkuNumber() {
std::string has_sku_number;
cros_config_->GetString(kCachedVpdPropertiesPath, kHasSkuNumberProperty,
&has_sku_number);
return has_sku_number == "true";
}
bool SystemConfig::HasSmartBattery() {
std::string has_smart_battery_info;
cros_config_->GetString(kBatteryPropertiesPath, kHasSmartBatteryInfoProperty,
&has_smart_battery_info);
return has_smart_battery_info == "true";
}
bool SystemConfig::NvmeSupported() {
return base::PathExists(root_dir_.AppendASCII(kNvmeToolPath));
}
bool SystemConfig::SmartCtlSupported() {
return base::PathExists(root_dir_.AppendASCII(kSmartctlToolPath));
}
std::string SystemConfig::GetMarketingName() {
std::string marketing_name;
cros_config_->GetString(kArcBuildPropertiesPath, kMarketingNameProperty,
&marketing_name);
return marketing_name;
}
} // namespace diagnostics