// Copyright 2019 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.

#ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_TEST_INSPECT_HOST_CMD_H_
#define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_TEST_INSPECT_HOST_CMD_H_

#include <stdio.h>

#if defined(__cplusplus)
extern "C" {
#endif  // defined(__cplusplus)

#include "third_party/iwlwifi/iwl-trans.h"

// Util functions to dump host command info/data for debug.
void inspect_host_cmd(const char* func_name, int line_no, struct iwl_host_cmd* cmd);

// |cmd| should be 'struct iwl_host_cmd*'.
#define INSPECT_HOST_CMD(cmd)                  \
  do {                                         \
    inspect_host_cmd(__func__, __LINE__, cmd); \
  } while (0)

#if defined(__cplusplus)
}  // extern "C"
#endif  // defined(__cplusplus)

#endif  // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_TEST_INSPECT_HOST_CMD_H_
