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

visibility = [ "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/*" ]

# These are the headers for the firmware API.  To avoid circular dependencies, these do not depend
# on anything in iwlwifi other than platform/.
source_set("api") {
  public = [
    "acpi.h",
    "api/alive.h",
    "api/binding.h",
    "api/cmdhdr.h",
    "api/coex.h",
    "api/commands.h",
    "api/config.h",
    "api/context.h",
    "api/d3.h",
    "api/datapath.h",
    "api/dbg-tlv.h",
    "api/debug.h",
    "api/filter.h",
    "api/led.h",
    "api/mac-cfg.h",
    "api/mac.h",
    "api/nan.h",
    "api/nvm-reg.h",
    "api/offload.h",
    "api/paging.h",
    "api/phy-ctxt.h",
    "api/phy.h",
    "api/power.h",
    "api/rs.h",
    "api/rx.h",
    "api/scan.h",
    "api/sf.h",
    "api/soc.h",
    "api/sta.h",
    "api/stats.h",
    "api/tdls.h",
    "api/testing.h",
    "api/time-event.h",
    "api/tof.h",
    "api/tx.h",
    "api/txq.h",
    "error-dump.h",
    "file.h",
    "img.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.wlan.ieee80211:fuchsia.wlan.ieee80211_c",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/platform",
    "//src/lib/ddk",
  ]
}

source_set("fw") {
  sources = [
    "dbg.c",
    "init.c",
    "notif-wait.c",
    "paging.c",
    "smem.c",
  ]
  public = [
    "dbg.h",
    "notif-wait.h",
    "runtime.h",
  ]
  public_deps = [
    ":api",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi:core",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/platform",
    "//zircon/system/public",
    "//zircon/system/ulib/sync",
  ]
}
