# Copyright 2016 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.

source_set("input_reader") {
  sources = [
    "input_interpreter.cc",
    "input_interpreter.h",
    "input_reader.cc",
    "input_reader.h",
  ]

  deps = [
    ":fdio",
    "//garnet/public/lib/fostr/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/hid-parser",
    "//zircon/public/lib/trace",
  ]

  configs += [ "//src/ui/scenic/lib/gfx:swapchain" ]

  public_deps = [
    ":device",
    "//sdk/fidl/fuchsia.ui.input",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/hid",
    "//zircon/public/lib/zx",
  ]
}

source_set("fdio") {
  visibility = [ ":*" ]

  sources = [
    "fdio_device_watcher.cc",
    "fdio_device_watcher.h",
    "fdio_hid_decoder.cc",
    "fdio_hid_decoder.h",
  ]

  deps = [
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/hid",
    "//zircon/public/lib/hid-parser",
    "//zircon/public/lib/trace",
    "//zircon/system/fidl/fuchsia-device:fuchsia-device_c",
    "//zircon/system/fidl/fuchsia-device:fuchsia-device_llcpp",
    "//zircon/system/fidl/fuchsia-hardware-input:fuchsia-hardware-input_c",
  ]

  public_deps = [
    ":device",
    "//sdk/fidl/fuchsia.ui.input",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fzl",
  ]
}

source_set("device") {
  sources = [
    "buttons.cc",
    "buttons.h",
    "device_watcher.h",
    "hardcoded.cc",
    "hardcoded.h",
    "hid_decoder.cc",
    "hid_decoder.h",
    "keyboard.cc",
    "mouse.cc",
    "mouse.h",
    "pointer.cc",
    "pointer.h",
    "sensor.cc",
    "sensor.h",
    "stylus.cc",
    "stylus.h",
    "touch.cc",
    "touch.h",
    "touchpad.cc",
    "touchpad.h",
    "touchscreen.cc",
    "touchscreen.h",
  ]

  deps = [
    "//zircon/public/lib/trace",
  ]

  public_deps = [
    "//garnet/public/lib/fostr/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//src/lib/fxl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/hid",
    "//zircon/public/lib/hid-parser",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-hardware-input:fuchsia-hardware-input_c",
  ]
}
