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

package(default_visibility = ["//visibility:public"])

cc_library(
  name = "mvm",
  srcs = [
    "binding.c",
    "coex.c",
    "fw.c",
    "mac-ctxt.c",
    "mac80211.c",
    "nvm.c",
    "ops.c",
    "phy-ctxt.c",
    "power.c",
    "rx.c",
    "rxmq.c",
    "scan.c",
    "sta.c",
    "time-event.c",
    "tof.c",
    "tt.c",
    "tx.c",
    "utils.c",
  ],
  hdrs = [
    "API_rates.h",
    "_rateScaleMng.h",
   "apiGroupDatapath.h",
   "apiVersion.h",
   "constants.h",
    "fw-api.h",
   "mvm.h",
   "rs-ng.h",
   "rs.h",
   "sta.h",
   "time-event.h",
   "tof.h",
  ],
  deps = [
  #  "//zircon/system/ulib/zircon-internal",
  #  "//garnet/lib/wlan/protocol:protocol",
    "@fuchsia_sdk//fidl/fuchsia_hardware_wlanphyinfo:fuchsia_hardware_wlanphyinfo_banjo_cc",
    "@fuchsia_sdk//fidl/fuchsia_hardware_wlan_info:fuchsia_hardware_wlan_info_banjo_cc",
    "@fuchsia_sdk//fidl/fuchsia_wlan_ieee80211:fuchsia_wlan_ieee80211_llcpp_cc",
    "//src/iwlwifi:core",
    "//src/iwlwifi/fw:fw",
    "//src/iwlwifi/fw:api",
   "//src/iwlwifi/platform:platform",
    "@fuchsia_sdk//pkg/ddk",
#    "//zircon/system/public",
#    "//zircon/system/ulib/async",
  ],
)