// 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 FUCHSIA_SDK_EXAMPLES_SRC_I2C_TEMPERATURE_I2C_CONTROLLER_H_
#define FUCHSIA_SDK_EXAMPLES_SRC_I2C_TEMPERATURE_I2C_CONTROLLER_H_

#include <lib/driver/compat/cpp/compat.h>
#include <lib/driver/component/cpp/driver_cpp.h>

#include "i2c_server.h"

namespace i2c_temperature {

// Sample driver that implements a `fuchsia.hardware.i2c` bus controller and emulates the
// behavior of a temperature sensor device to interact with the i2c temperature driver.
class I2cTemperatureController : public driver::DriverBase {
 public:
  I2cTemperatureController(driver::DriverStartArgs start_args,
                           fdf::UnownedDispatcher driver_dispatcher)
      : driver::DriverBase("i2c-temperature-controller", std::move(start_args),
                           std::move(driver_dispatcher)) {}

  virtual ~I2cTemperatureController() = default;

  zx::result<> Start() override;

 private:
  zx::result<> AddChild();

  std::optional<compat::DeviceServer> child_;
  fidl::WireSharedClient<fuchsia_driver_framework::Node> node_;
  fidl::WireSharedClient<fuchsia_driver_framework::NodeController> controller_;
  std::shared_ptr<I2cDeviceServer> i2c_server_;
};

}  // namespace i2c_temperature

#endif  // FUCHSIA_SDK_EXAMPLES_SRC_I2C_TEMPERATURE_I2C_CONTROLLER_H_
