// Copyright 2018 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.

// Library to provide access to the Chrome OS master configuration

#ifndef CHROMEOS_CONFIG_LIBCROS_CONFIG_IDENTITY_X86_H_
#define CHROMEOS_CONFIG_LIBCROS_CONFIG_IDENTITY_X86_H_

#include "chromeos-config/libcros_config/identity.h"

#include <string>

#include <base/files/file_path.h>
#include <base/files/file.h>

namespace brillo {
struct SmbiosTable;

class CrosConfigIdentityX86 : public CrosConfigIdentity {
 public:
  CrosConfigIdentityX86();
  ~CrosConfigIdentityX86();

  // @return Name value read via ReadSmbios
  const std::string& GetName() const { return name_; }

  // @return SKU ID value read via ReadSmbios
  int GetSkuId() const { return sku_id_; }

  // Initially, the SKU ID will be read from smbios but if user would like to
  // have the identify with different SKU ID then you can overwrite it here.
  void SetSkuId(const int sku_id) { sku_id_ = sku_id; }

  // Read the device identity infromation from the kernel files.
  // This information is set up by AP firmware, so in effect AP firmware
  // sets the device identity.
  //
  // @product_name_file: File containing product name
  // @product_sku_file: File containing SKU ID string
  bool ReadInfo(const base::FilePath& product_name_file,
                const base::FilePath& product_sku_file);

  // Write out fake file containing fake identity information.
  // This is only used for testing.
  // @name: Platform name to write (e.g. 'Reef')
  // @sku_id: SKU ID number to write (e.g. 8)
  // @product_name_file_out: File that the name was written into
  // @product_sku_file_out: File that the SKU ID string was written into
  // @return true if OK, false on error
  bool Fake(const std::string& name,
            int sku_id,
            base::FilePath* product_name_file_out,
            base::FilePath* product_sku_file_out);

 private:
  std::string name_;
  int sku_id_;

  DISALLOW_COPY_AND_ASSIGN(CrosConfigIdentityX86);
};

}  // namespace brillo

#endif  // CHROMEOS_CONFIG_LIBCROS_CONFIG_IDENTITY_X86_H_
