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

static_library("gap") {
  sources = [
    "adapter.cc",
    "adapter.h",
    "adapter_state.cc",
    "adapter_state.h",
    "advertising_data.cc",
    "advertising_data.h",
    "bredr_connection_manager.cc",
    "bredr_connection_manager.h",
    "bredr_discovery_manager.cc",
    "bredr_discovery_manager.h",
    "bredr_interrogator.cc",
    "bredr_interrogator.h",
    "connection_request.h",
    "discovery_filter.cc",
    "discovery_filter.h",
    "gap.h",
    "identity_resolving_list.cc",
    "identity_resolving_list.h",
    "low_energy_address_manager.cc",
    "low_energy_address_manager.h",
    "low_energy_advertising_manager.cc",
    "low_energy_advertising_manager.h",
    "low_energy_connection_manager.cc",
    "low_energy_connection_manager.h",
    "low_energy_discovery_manager.cc",
    "low_energy_discovery_manager.h",
    "low_energy_state.cc",
    "low_energy_state.h",
    "pairing_delegate.h",
    "peer.cc",
    "peer.h",
    "peer_cache.cc",
    "peer_cache.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.bluetooth",
    "//sdk/fidl/fuchsia.bluetooth.le",
    "//src/connectivity/bluetooth/core/bt-host/common",
    "//src/connectivity/bluetooth/core/bt-host/data",
    "//src/connectivity/bluetooth/core/bt-host/gatt",
    "//src/connectivity/bluetooth/core/bt-host/hci",
    "//src/connectivity/bluetooth/core/bt-host/l2cap",
    "//src/connectivity/bluetooth/core/bt-host/sdp",
    "//src/connectivity/bluetooth/core/bt-host/sm",
    "//src/lib/fxl",
    "//src/lib/uuid",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "adapter_unittest.cc",
    "advertising_data_unittest.cc",
    "bredr_connection_manager_unittest.cc",
    "bredr_discovery_manager_unittest.cc",
    "discovery_filter_unittest.cc",
    "identity_resolving_list_unittest.cc",
    "low_energy_address_manager_unittest.cc",
    "low_energy_advertising_manager_unittest.cc",
    "low_energy_connection_manager_unittest.cc",
    "low_energy_discovery_manager_unittest.cc",
    "peer_cache_unittest.cc",
  ]

  deps = [
    ":gap",
    "//garnet/public/lib/gtest",
    "//src/connectivity/bluetooth/core/bt-host/data:testing",
    "//src/connectivity/bluetooth/core/bt-host/gatt:testing",
    "//src/connectivity/bluetooth/core/bt-host/hci:testing",
    "//src/connectivity/bluetooth/core/bt-host/testing",
    "//third_party/googletest:gtest",
  ]
}
