blob: 4118babf160c97308de928c46ca04f2af544b7ac [file] [log] [blame]
// Copyright 2019 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 "runtime_probe/functions/vpd_cached.h"
#include <utility>
#include <vector>
#include "runtime_probe/utils/file_utils.h"
#include "runtime_probe/utils/value_utils.h"
namespace runtime_probe {
namespace {
constexpr char kSysfsVPDCached[] = "/sys/firmware/vpd/ro/";
// sku_number is defined in public partner documentation:
// https://www.google.com/chromeos/partner/fe/docs/factory/vpd.html#field-sku_number
// sku_number is allowed to be exposed as stated in b/130322365#c28
const std::vector<std::string> kAllowedOptionalKeys{"sku_number"};
const auto kKeyPrefix = "vpd_";
}; // namespace
VPDCached::DataType VPDCached::EvalImpl() const {
const std::vector<std::string> require_keys{vpd_name_};
auto dict_value = MapFilesToDict(base::FilePath(kSysfsVPDCached),
require_keys, kAllowedOptionalKeys);
if (!dict_value)
return {};
PrependToDVKey(&*dict_value, kKeyPrefix);
VPDCached::DataType result{};
result.push_back(std::move(*dict_value));
return result;
}
} // namespace runtime_probe