/* Generated by ./xlat/gen.sh from ./xlat/hci_channels.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(HCI_CHANNEL_RAW) || (defined(HAVE_DECL_HCI_CHANNEL_RAW) && HAVE_DECL_HCI_CHANNEL_RAW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((HCI_CHANNEL_RAW) == (0), "HCI_CHANNEL_RAW != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define HCI_CHANNEL_RAW 0
#endif
#if defined(HCI_CHANNEL_USER) || (defined(HAVE_DECL_HCI_CHANNEL_USER) && HAVE_DECL_HCI_CHANNEL_USER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((HCI_CHANNEL_USER) == (1), "HCI_CHANNEL_USER != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define HCI_CHANNEL_USER 1
#endif
#if defined(HCI_CHANNEL_MONITOR) || (defined(HAVE_DECL_HCI_CHANNEL_MONITOR) && HAVE_DECL_HCI_CHANNEL_MONITOR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((HCI_CHANNEL_MONITOR) == (2), "HCI_CHANNEL_MONITOR != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define HCI_CHANNEL_MONITOR 2
#endif
#if defined(HCI_CHANNEL_CONTROL) || (defined(HAVE_DECL_HCI_CHANNEL_CONTROL) && HAVE_DECL_HCI_CHANNEL_CONTROL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((HCI_CHANNEL_CONTROL) == (3), "HCI_CHANNEL_CONTROL != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define HCI_CHANNEL_CONTROL 3
#endif
#if defined(HCI_CHANNEL_LOGGING) || (defined(HAVE_DECL_HCI_CHANNEL_LOGGING) && HAVE_DECL_HCI_CHANNEL_LOGGING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((HCI_CHANNEL_LOGGING) == (4), "HCI_CHANNEL_LOGGING != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define HCI_CHANNEL_LOGGING 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat hci_channels in mpers mode

# else

static
const struct xlat hci_channels[] = {
 [HCI_CHANNEL_RAW] = XLAT(HCI_CHANNEL_RAW),
 [HCI_CHANNEL_USER] = XLAT(HCI_CHANNEL_USER),
 [HCI_CHANNEL_MONITOR] = XLAT(HCI_CHANNEL_MONITOR),
 [HCI_CHANNEL_CONTROL] = XLAT(HCI_CHANNEL_CONTROL),
 [HCI_CHANNEL_LOGGING] = XLAT(HCI_CHANNEL_LOGGING),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
