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

#ifndef RMAD_UTILS_CBI_UTILS_IMPL_H_
#define RMAD_UTILS_CBI_UTILS_IMPL_H_

#include "rmad/utils/cbi_utils.h"

#include <string>
#include <vector>

namespace rmad {

// Calls `ectool` command to set/get CBI values.

class CbiUtilsImpl : public CbiUtils {
 public:
  CbiUtilsImpl() = default;
  ~CbiUtilsImpl() = default;

  bool SetCbi(int tag, const std::string& value, int set_flag = 0) override;
  bool GetCbi(int tag, std::string* value, int get_flag = 0) const override;
  bool SetCbi(int tag, uint64_t value, int size, int set_flag = 0) override;
  bool GetCbi(int tag, uint64_t* value, int get_flag = 0) const override;
};

}  // namespace rmad

#endif  // RMAD_UTILS_CBI_UTILS_IMPL_H_
