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

import("//build/components.gni")
import("//build/config.gni")
import("//build/rust/rustc_binary.gni")

rustc_binary("bin") {
  edition = "2021"
  name = "bt_hfp_hands_free"
  with_unit_tests = true

  deps = [
    ":hfp_hands_free_profile_config",
    "//sdk/fidl/fuchsia.bluetooth:fuchsia.bluetooth_rust",
    "//sdk/fidl/fuchsia.bluetooth.bredr:fuchsia.bluetooth.bredr_rust",
    "//sdk/fidl/fuchsia.bluetooth.hfp:fuchsia.bluetooth.hfp_rust",
    "//src/connectivity/bluetooth/lib/async-helpers",
    "//src/connectivity/bluetooth/lib/bt-hfp",
    "//src/connectivity/bluetooth/lib/bt-rfcomm",
    "//src/connectivity/bluetooth/lib/fuchsia-bluetooth",
    "//src/connectivity/bluetooth/lib/profile-client",
    "//src/connectivity/lib/at-commands",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:bitflags",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]
  test_deps = [
    "//src/connectivity/bluetooth/lib/async-helpers:async-test-helpers",
    "//src/connectivity/bluetooth/lib/profile-client:test-profile-server",
    "//src/lib/async-utils",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:paste",
  ]

  sources = [
    "src/config.rs",
    "src/features.rs",
    "src/hfp.rs",
    "src/hfp/tests.rs",
    "src/main.rs",
    "src/peer.rs",
    "src/peer/ag_indicators.rs",
    "src/peer/at_connection.rs",
    "src/peer/hf_indicators.rs",
    "src/peer/peer_task.rs",
    "src/peer/procedure.rs",
    "src/peer/procedure/audio_connection_setup.rs",
    "src/peer/procedure/codec_connection_setup.rs",
    "src/peer/procedure/initiate_call.rs",
    "src/peer/procedure/slc_initialization.rs",
    "src/peer/procedure/test.rs",
    "src/peer/procedure_manager.rs",
    "src/peer/procedure_manipulated_state.rs",
    "src/profile.rs",
    "src/service_definition.rs",
  ]
  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
}

fuchsia_component_manifest("manifest") {
  component_name = "bt-hfp-hands-free"
  manifest = "meta/bt-hfp-hands-free.cml"
}

fuchsia_component("component") {
  cm_label = ":manifest"
  deps = [ ":bin" ]
}

fuchsia_structured_config_rust_lib("hfp_hands_free_profile_config") {
  cm_label = ":manifest"
}

fuchsia_structured_config_values("default_config_values") {
  cm_label = ":manifest"
  values_source = "config/default.json5"
}

fuchsia_package("bt-hfp-hands-free") {
  deps = [
    ":component",
    ":default_config_values",
  ]
}

fuchsia_unittest_package("bt-hfp-hands-free-tests") {
  deps = [ ":bin_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":bt-hfp-hands-free-tests" ]
}
