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

/*
 * Retry device handler.
 */
#include "hps/hal/retry.h"

#include <iostream>

#include <base/threading/thread.h>

namespace hps {

bool RetryDev::Read(uint8_t cmd, uint8_t* data, size_t len) {
  for (int i = 0; i < this->retries_; i++) {
    if (device_->Read(cmd, data, len)) {
      // Success!
      return true;
    }
    base::PlatformThread::Sleep(this->delay_);
  }
  return false;
}

bool RetryDev::Write(uint8_t cmd, const uint8_t* data, size_t len) {
  for (int i = 0; i < this->retries_; i++) {
    if (device_->Write(cmd, data, len)) {
      // Success!
      return true;
    }
    base::PlatformThread::Sleep(this->delay_);
  }
  return false;
}

}  // namespace hps
