// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_DA7219_CONTROLLER_I2C_SERVER_H_
#define SRC_DA7219_CONTROLLER_I2C_SERVER_H_

#include <fidl/fuchsia.hardware.i2c/cpp/wire.h>
#include <lib/driver2/logger.h>

namespace test_i2c_controller {

// FIDL server implementation for the `fuchsia.hardware.i2c/Device` protocol
class I2cDeviceServer : public fidl::WireServer<fuchsia_hardware_i2c::Device> {
 public:
  I2cDeviceServer(driver::Logger& logger) : logger_(logger) {}

  static fidl::ServerBindingRef<fuchsia_hardware_i2c::Device> BindDeviceClient(
      std::shared_ptr<I2cDeviceServer> server_impl, async_dispatcher_t* dispatcher,
      fidl::ServerEnd<fuchsia_hardware_i2c::Device> request);
  void OnUnbound(fidl::UnbindInfo info, fidl::ServerEnd<fuchsia_hardware_i2c::Device> server_end);

  void Transfer(TransferRequestView request, TransferCompleter::Sync& completer) override;

 private:
  driver::Logger& logger_;
};

}  // namespace test_i2c_controller

#endif  // SRC_DA7219_CONTROLLER_I2C_SERVER_H_
