blob: 8d6dcd90e8fc77fb59ff75cb56f343ccbb551c2c [file] [log] [blame] [edit]
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef RMAD_UTILS_CROS_CONFIG_UTILS_H_
#define RMAD_UTILS_CROS_CONFIG_UTILS_H_
#include <map>
#include <optional>
#include <string>
#include <vector>
namespace rmad {
// Rmad config and SSFC config structures defined in cros_config.
// See platform2/chromeos-config/README.md#rmad for more details.
struct SsfcComponentTypeConfig {
std::string component_type;
uint32_t default_value;
std::map<std::string, uint32_t> probeable_components;
};
struct SsfcConfig {
uint32_t mask;
std::vector<SsfcComponentTypeConfig> component_type_configs;
};
struct RmadConfig {
bool enabled;
bool has_cbi;
SsfcConfig ssfc;
bool use_legacy_custom_label;
};
// A collection of design config parsed from each entry of cros_config database.
struct DesignConfig {
std::string model_name;
std::optional<uint32_t> sku_id;
std::optional<std::string> custom_label_tag;
std::vector<std::string> hardware_properties;
};
class CrosConfigUtils {
public:
CrosConfigUtils() = default;
virtual ~CrosConfigUtils() = default;
// Get cros_config attributes of the device.
virtual bool GetRmadConfig(RmadConfig* config) const = 0;
virtual bool GetModelName(std::string* model_name) const = 0;
virtual bool GetBrandCode(std::string* brand_code) const = 0;
virtual bool GetSkuId(uint32_t* sku_id) const = 0;
virtual bool GetCustomLabelTag(std::string* custom_label_tag) const = 0;
virtual bool GetFirmwareConfig(uint32_t* firmware_config) const = 0;
virtual std::optional<std::string> GetSpiFlashTransform(
const std::string& flash_name) const = 0;
// Get cros_config attributes of all supported designs from the database.
virtual bool GetDesignConfigList(
std::vector<DesignConfig>* design_config_list) const = 0;
virtual bool GetSkuIdList(std::vector<uint32_t>* sku_id_list) const = 0;
virtual bool GetCustomLabelTagList(
std::vector<std::string>* custom_label_tag_list) const = 0;
// Other helper functions.
bool HasCustomLabel() const;
};
} // namespace rmad
#endif // RMAD_UTILS_CROS_CONFIG_UTILS_H_