blob: 88daccf16e4765fff93198e3384455478e780e52 [file] [log] [blame]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_H_
#include <cstdint>
#include <memory>
#include <vector>
#include "absl/status/statusor.h"
#include "absl/time/time.h"
namespace milotic_tlbmc {
// FRU data read from I2C.
struct I2cFruInfo {
// I2C bus number.
uint32_t bus;
// FRU address.
uint32_t address;
// Raw FRU data.
std::vector<uint8_t> data;
};
// Interface for reading FRU data.
class FruScanner {
public:
virtual ~FruScanner() = default;
// Reads all FRU data from I2C.
virtual absl::StatusOr<std::vector<std::unique_ptr<I2cFruInfo>>>
ScanAllI2cFrus() = 0;
virtual absl::StatusOr<std::unique_ptr<I2cFruInfo>> GetI2cFruInfoFromBus(
int bus, int address, absl::Duration delay_between_reads) = 0;
};
} // namespace milotic_tlbmc
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_H_