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

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

#if defined(L2CAP_CID_SIGNALING) || (defined(HAVE_DECL_L2CAP_CID_SIGNALING) && HAVE_DECL_L2CAP_CID_SIGNALING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_SIGNALING) == (0x0001), "L2CAP_CID_SIGNALING != 0x0001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_SIGNALING 0x0001
#endif
#if defined(L2CAP_CID_CONN_LESS) || (defined(HAVE_DECL_L2CAP_CID_CONN_LESS) && HAVE_DECL_L2CAP_CID_CONN_LESS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_CONN_LESS) == (0x0002), "L2CAP_CID_CONN_LESS != 0x0002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_CONN_LESS 0x0002
#endif
#if defined(L2CAP_CID_A2MP) || (defined(HAVE_DECL_L2CAP_CID_A2MP) && HAVE_DECL_L2CAP_CID_A2MP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_A2MP) == (0x0003), "L2CAP_CID_A2MP != 0x0003");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_A2MP 0x0003
#endif
#if defined(L2CAP_CID_ATT) || (defined(HAVE_DECL_L2CAP_CID_ATT) && HAVE_DECL_L2CAP_CID_ATT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_ATT) == (0x0004), "L2CAP_CID_ATT != 0x0004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_ATT 0x0004
#endif
#if defined(L2CAP_CID_LE_SIGNALING) || (defined(HAVE_DECL_L2CAP_CID_LE_SIGNALING) && HAVE_DECL_L2CAP_CID_LE_SIGNALING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_LE_SIGNALING) == (0x0005), "L2CAP_CID_LE_SIGNALING != 0x0005");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_LE_SIGNALING 0x0005
#endif
#if defined(L2CAP_CID_SMP) || (defined(HAVE_DECL_L2CAP_CID_SMP) && HAVE_DECL_L2CAP_CID_SMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_SMP) == (0x0006), "L2CAP_CID_SMP != 0x0006");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_SMP 0x0006
#endif
#if defined(L2CAP_CID_SMP_BREDR) || (defined(HAVE_DECL_L2CAP_CID_SMP_BREDR) && HAVE_DECL_L2CAP_CID_SMP_BREDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_SMP_BREDR) == (0x0007), "L2CAP_CID_SMP_BREDR != 0x0007");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_SMP_BREDR 0x0007
#endif
#if defined(L2CAP_CID_DYN_START) || (defined(HAVE_DECL_L2CAP_CID_DYN_START) && HAVE_DECL_L2CAP_CID_DYN_START)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_DYN_START) == (0x0040), "L2CAP_CID_DYN_START != 0x0040");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_DYN_START 0x0040
#endif
#if defined(L2CAP_CID_LE_DYN_END) || (defined(HAVE_DECL_L2CAP_CID_LE_DYN_END) && HAVE_DECL_L2CAP_CID_LE_DYN_END)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_LE_DYN_END) == (0x007f), "L2CAP_CID_LE_DYN_END != 0x007f");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_LE_DYN_END 0x007f
#endif
#if defined(L2CAP_CID_DYN_END) || (defined(HAVE_DECL_L2CAP_CID_DYN_END) && HAVE_DECL_L2CAP_CID_DYN_END)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((L2CAP_CID_DYN_END) == (0xffff), "L2CAP_CID_DYN_END != 0xffff");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define L2CAP_CID_DYN_END 0xffff
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat bluetooth_l2_cid in mpers mode

# else

static
const struct xlat bluetooth_l2_cid[] = {

 XLAT(L2CAP_CID_SIGNALING),
 XLAT(L2CAP_CID_CONN_LESS),
 XLAT(L2CAP_CID_A2MP),
 XLAT(L2CAP_CID_ATT),
 XLAT(L2CAP_CID_LE_SIGNALING),
 XLAT(L2CAP_CID_SMP),
 XLAT(L2CAP_CID_SMP_BREDR),
 XLAT(L2CAP_CID_DYN_START),
 XLAT(L2CAP_CID_LE_DYN_END),
 XLAT(L2CAP_CID_DYN_END),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
