blob: ada744f95e357690796aac4d85f0dd7086b2740d [file] [log] [blame]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_PECI_PECI_ACCESS_IMPL_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_PECI_PECI_ACCESS_IMPL_H_
#include <array>
#include <cstdint>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "tlbmc/hal/peci/peci_access_interface.h"
#include "peci.h"
namespace milotic_tlbmc {
class PeciAccessImpl : public PeciAccessInterface {
public:
PeciAccessImpl() = default;
~PeciAccessImpl() override = default;
absl::Status Ping(uint8_t target) const override;
absl::StatusOr<std::array<uint8_t, 8>> RdPkgConfig(
uint8_t target, uint8_t index, uint16_t value,
uint8_t read_len) const override;
void SetDevName(absl::string_view dev_name) const override;
absl::StatusOr<int> Lock(EPECITimeout timeout) const override;
void Unlock(int peci_fd) const override;
protected:
static absl::Status PeciStatusToAbslStatus(EPECIStatus status,
uint8_t completion_code,
absl::string_view message);
};
} // namespace milotic_tlbmc
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_PECI_PECI_ACCESS_IMPL_H_