blob: 8c2015fd0a720ba95a71f81e4b16f5133b0cb8a8 [file]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_GPIO_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_GPIO_H_
#include <memory>
#include <utility>
#include <vector>
#include "bus_topology.pb.h"
#include "absl/status/statusor.h"
#include "tlbmc/collector/gpio_collector.h"
#include "gpio_fru_config.pb.h"
#include "tlbmc/hal/fru_scanner.h"
#include "status.pb.h"
namespace milotic_tlbmc {
class FruScannerGpio : public FruScanner {
public:
struct Options {
std::vector<milotic_tlbmc::GpioFruComponent> components;
GpioCollector* gpio_collector = nullptr;
};
static absl::StatusOr<std::unique_ptr<FruScannerGpio>> Create(
const Options& option);
absl::StatusOr<std::vector<std::unique_ptr<GpioFruInfo>>> ScanAllGpioFrus()
const override;
protected:
FruScannerGpio(std::vector<milotic_tlbmc::GpioFruComponent> components,
GpioCollector* gpio_collector)
: gpio_components_(std::move(components)),
gpio_collector_(gpio_collector) {}
std::vector<milotic_tlbmc::GpioFruComponent> gpio_components_;
private:
GpioCollector* gpio_collector_ = nullptr;
};
} // namespace milotic_tlbmc
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_FRU_SCANNER_GPIO_H_