| #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_ |