aboutsummaryrefslogtreecommitdiff
path: root/platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h')
-rw-r--r--platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h1555
1 files changed, 1555 insertions, 0 deletions
diff --git a/platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h b/platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h
new file mode 100644
index 0000000..2eac206
--- /dev/null
+++ b/platform/atm2/ATM22xx-x1x/include/ble/co_lmp.h
@@ -0,0 +1,1555 @@
+/**
+ ****************************************************************************************
+ *
+ * @file co_lmp.h
+ *
+ * @brief This file contains the HCI Bluetooth defines, enumerations and structures
+ * definitions for use by all modules in RW stack.
+ *
+ * Copyright (C) RivieraWaves 2009-2015
+ *
+ ****************************************************************************************
+ */
+
+#ifndef CO_LMP_H_
+#define CO_LMP_H_
+
+/**
+ ****************************************************************************************
+ * @addtogroup CO_BT
+ * @{
+ ****************************************************************************************
+ */
+
+
+/*
+ * INCLUDE FILES
+ ****************************************************************************************
+ */
+#include "co_bt.h"
+/*
+ * DEFINES
+ ****************************************************************************************
+ */
+
+/// LMP Opcodes
+/*@TRACE*/
+enum co_lmp_opcode
+{
+ LMP_NAME_REQ_OPCODE = 1 ,
+ LMP_NAME_RES_OPCODE = 2 ,
+ LMP_ACCEPTED_OPCODE = 3 ,
+ LMP_NOT_ACCEPTED_OPCODE = 4 ,
+ LMP_CLK_OFF_REQ_OPCODE = 5 ,
+ LMP_CLK_OFF_RES_OPCODE = 6 ,
+ LMP_DETACH_OPCODE = 7 ,
+ LMP_INRAND_OPCODE = 8 ,
+ LMP_COMBKEY_OPCODE = 9 ,
+ LMP_UNITKEY_OPCODE = 10 ,
+ LMP_AURAND_OPCODE = 11 ,
+ LMP_SRES_OPCODE = 12 ,
+ LMP_TEMPRAND_OPCODE = 13 ,
+ LMP_TEMPKEY_OPCODE = 14 ,
+ LMP_ENC_MODE_REQ_OPCODE = 15 ,
+ LMP_ENC_KEY_SIZE_REQ_OPCODE = 16 ,
+ LMP_START_ENC_REQ_OPCODE = 17 ,
+ LMP_STOP_ENC_REQ_OPCODE = 18 ,
+ LMP_SWITCH_REQ_OPCODE = 19 ,
+ LMP_HOLD_OPCODE = 20 ,
+ LMP_HOLD_REQ_OPCODE = 21 ,
+ LMP_SNIFF_REQ_OPCODE = 23 ,
+ LMP_UNSNIFF_REQ_OPCODE = 24 ,
+ LMP_PARK_REQ_OPCODE = 25 ,
+ LMP_SET_BSWIN_OPCODE = 27 ,
+ LMP_MODIF_BEACON_OPCODE = 28 ,
+ LMP_UNPARK_BD_REQ_OPCODE = 29 ,
+ LMP_UNPARK_PM_REQ_OPCODE = 30 ,
+ LMP_INCR_PWR_REQ_OPCODE = 31 ,
+ LMP_DECR_PWR_REQ_OPCODE = 32 ,
+ LMP_MAX_PWR_OPCODE = 33 ,
+ LMP_MIN_PWR_OPCODE = 34 ,
+ LMP_AUTO_RATE_OPCODE = 35 ,
+ LMP_PREF_RATE_OPCODE = 36 ,
+ LMP_VER_REQ_OPCODE = 37 ,
+ LMP_VER_RES_OPCODE = 38 ,
+ LMP_FEATS_REQ_OPCODE = 39 ,
+ LMP_FEATS_RES_OPCODE = 40 ,
+ LMP_QOS_OPCODE = 41 ,
+ LMP_QOS_REQ_OPCODE = 42 ,
+ LMP_SCO_LINK_REQ_OPCODE = 43 ,
+ LMP_RMV_SCO_LINK_REQ_OPCODE = 44 ,
+ LMP_MAX_SLOT_OPCODE = 45 ,
+ LMP_MAX_SLOT_REQ_OPCODE = 46 ,
+ LMP_TIMING_ACCU_REQ_OPCODE = 47 ,
+ LMP_TIMING_ACCU_RES_OPCODE = 48 ,
+ LMP_SETUP_CMP_OPCODE = 49 ,
+ LMP_USE_SEMI_PERM_KEY_OPCODE = 50 ,
+ LMP_HOST_CON_REQ_OPCODE = 51 ,
+ LMP_SLOT_OFF_OPCODE = 52 ,
+ LMP_PAGE_MODE_REQ_OPCODE = 53 ,
+ LMP_PAGE_SCAN_MODE_REQ_OPCODE = 54 ,
+ LMP_SUPV_TO_OPCODE = 55 ,
+ LMP_TEST_ACTIVATE_OPCODE = 56 ,
+ LMP_TEST_CTRL_OPCODE = 57 ,
+ LMP_ENC_KEY_SIZE_MASK_REQ_OPCODE = 58 ,
+ LMP_ENC_KEY_SIZE_MASK_RES_OPCODE = 59 ,
+ LMP_SET_AFH_OPCODE = 60 ,
+ LMP_ENCAPS_HDR_OPCODE = 61 ,
+ LMP_ENCAPS_PAYL_OPCODE = 62 ,
+ LMP_SP_CFM_OPCODE = 63 ,
+ LMP_SP_NB_OPCODE = 64 ,
+ LMP_DHKEY_CHK_OPCODE = 65 ,
+ LMP_PAUSE_ENC_AES_REQ_OPCODE = 66 ,
+ LMP_ESC1_OPCODE = 124,
+ LMP_ESC2_OPCODE = 125,
+ LMP_ESC3_OPCODE = 126,
+ LMP_ESC4_OPCODE = 127,
+};
+
+/// LMP Escape 4 Extended Opcodes
+enum co_lmp_ext_opcode
+{
+ LMP_ACCEPTED_EXT_EXTOPCODE = 1,
+ LMP_NOT_ACCEPTED_EXT_EXTOPCODE = 2,
+ LMP_FEATS_REQ_EXT_EXTOPCODE = 3,
+ LMP_FEATS_RES_EXT_EXTOPCODE = 4,
+ LMP_CLK_ADJ_EXTOPCODE = 5,
+ LMP_CLK_ADJ_ACK_EXTOPCODE = 6,
+ LMP_CLK_ADJ_REQ_EXTOPCODE = 7,
+ LMP_PKT_TYPE_TBL_REQ_EXTOPCODE = 11,
+ LMP_ESCO_LINK_REQ_EXTOPCODE = 12,
+ LMP_RMV_ESCO_LINK_REQ_EXTOPCODE = 13,
+ LMP_CH_CLASS_REQ_EXTOPCODE = 16,
+ LMP_CH_CLASS_EXTOPCODE = 17,
+ LMP_SSR_REQ_EXTOPCODE = 21,
+ LMP_SSR_RES_EXTOPCODE = 22,
+ LMP_PAUSE_ENC_REQ_EXTOPCODE = 23,
+ LMP_RESUME_ENC_REQ_EXTOPCODE = 24,
+ LMP_IO_CAP_REQ_EXTOPCODE = 25,
+ LMP_IO_CAP_RES_EXTOPCODE = 26,
+ LMP_NUM_COMPARISON_FAIL_EXTOPCODE = 27,
+ LMP_PASSKEY_FAIL_EXTOPCODE = 28,
+ LMP_OOB_FAIL_EXTOPCODE = 29,
+ LMP_KEYPRESS_NOTIF_EXTOPCODE = 30,
+ LMP_PWR_CTRL_REQ_EXTOPCODE = 31,
+ LMP_PWR_CTRL_RES_EXTOPCODE = 32,
+ LMP_PING_REQ_EXTOPCODE = 33,
+ LMP_PING_RES_EXTOPCODE = 34,
+ LMP_SAM_SET_TYPE0_EXTOPCODE = 35,
+ LMP_SAM_DEFINE_MAP_EXTOPCODE = 36,
+ LMP_SAM_SWITCH_EXTOPCODE = 37,
+};
+
+/// PDU lengths (including opcode)
+enum co_lmp_pdu_length
+{
+ LMP_NAME_REQ_LEN = 2 ,
+ LMP_NAME_RES_LEN = 17,
+ LMP_ACCEPTED_LEN = 2 ,
+ LMP_NOT_ACCEPTED_LEN = 3 ,
+ LMP_CLK_OFF_REQ_LEN = 1 ,
+ LMP_CLK_OFF_RES_LEN = 3 ,
+ LMP_DETACH_LEN = 2 ,
+ LMP_INRAND_LEN = 17,
+ LMP_COMBKEY_LEN = 17,
+ LMP_UNITKEY_LEN = 17,
+ LMP_AURAND_LEN = 17,
+ LMP_SRES_LEN = 5 ,
+ LMP_TEMPRAND_LEN = 17,
+ LMP_TEMPKEY_LEN = 17,
+ LMP_ENC_MODE_REQ_LEN = 2 ,
+ LMP_ENC_KEY_SIZE_REQ_LEN = 2 ,
+ LMP_START_ENC_REQ_LEN = 17,
+ LMP_STOP_ENC_REQ_LEN = 1 ,
+ LMP_SWITCH_REQ_LEN = 5 ,
+ LMP_HOLD_LEN = 7 ,
+ LMP_HOLD_REQ_LEN = 7 ,
+ LMP_SNIFF_REQ_LEN = 10,
+ LMP_UNSNIFF_REQ_LEN = 1 ,
+ LMP_PARK_REQ_LEN = 17,
+ LMP_INCR_PWR_REQ_LEN = 2 ,
+ LMP_DECR_PWR_REQ_LEN = 2 ,
+ LMP_MAX_PWR_LEN = 1 ,
+ LMP_MIN_PWR_LEN = 1 ,
+ LMP_AUTO_RATE_LEN = 1 ,
+ LMP_PREF_RATE_LEN = 2 ,
+ LMP_VER_REQ_LEN = 6 ,
+ LMP_VER_RES_LEN = 6 ,
+ LMP_FEATS_REQ_LEN = 9 ,
+ LMP_FEATS_RES_LEN = 9 ,
+ LMP_QOS_LEN = 4 ,
+ LMP_QOS_REQ_LEN = 4 ,
+ LMP_SCO_LINK_REQ_LEN = 7 ,
+ LMP_RMV_SCO_LINK_REQ_LEN = 3 ,
+ LMP_MAX_SLOT_LEN = 2 ,
+ LMP_MAX_SLOT_REQ_LEN = 2 ,
+ LMP_TIMING_ACCU_REQ_LEN = 1 ,
+ LMP_TIMING_ACCU_RES_LEN = 3 ,
+ LMP_SETUP_CMP_LEN = 1 ,
+ LMP_USE_SEMI_PERM_KEY_LEN = 1 ,
+ LMP_HOST_CON_REQ_LEN = 1 ,
+ LMP_SLOT_OFF_LEN = 9 ,
+ LMP_PAGE_MODE_REQ_LEN = 3 ,
+ LMP_PAGE_SCAN_MODE_REQ_LEN = 3 ,
+ LMP_SUPV_TO_LEN = 3 ,
+ LMP_TEST_ACTIVATE_LEN = 1 ,
+ LMP_TEST_CTRL_LEN = 10,
+ LMP_ENC_KEY_SIZE_MASK_REQ_LEN = 1 ,
+ LMP_ENC_KEY_SIZE_MASK_RES_LEN = 3 ,
+ LMP_SET_AFH_LEN = 16,
+ LMP_ENCAPS_HDR_LEN = 4 ,
+ LMP_ENCAPS_PAYL_LEN = 17,
+ LMP_SP_CFM_LEN = 17,
+ LMP_SP_NB_LEN = 17,
+ LMP_DHKEY_CHK_LEN = 17,
+ LMP_PAUSE_ENC_AES_REQ_LEN = 17,
+};
+
+/// LMP Escape 4 Extended PDU length (including opcode and ext opcode)
+enum co_lmp_ext_pdu_length
+{
+ LMP_ACCEPTED_EXT_LEN = 4 ,
+ LMP_NOT_ACCEPTED_EXT_LEN = 5 ,
+ LMP_FEATS_REQ_EXT_LEN = 12,
+ LMP_FEATS_RES_EXT_LEN = 12,
+ LMP_CLK_ADJ_LEN = 15,
+ LMP_CLK_ADJ_ACK_LEN = 3 ,
+ LMP_CLK_ADJ_REQ_LEN = 6 ,
+ LMP_PKT_TYPE_TBL_REQ_LEN = 3 ,
+ LMP_ESCO_LINK_REQ_LEN = 16,
+ LMP_RMV_ESCO_LINK_REQ_LEN = 4 ,
+ LMP_CH_CLASS_REQ_LEN = 7 ,
+ LMP_CH_CLASS_LEN = 12,
+ LMP_SSR_REQ_LEN = 9 ,
+ LMP_SSR_RES_LEN = 9 ,
+ LMP_PAUSE_ENC_REQ_LEN = 2 ,
+ LMP_RESUME_ENC_REQ_LEN = 2 ,
+ LMP_IO_CAP_REQ_LEN = 5 ,
+ LMP_IO_CAP_RES_LEN = 5 ,
+ LMP_NUM_COMPARISON_FAIL_LEN = 2 ,
+ LMP_PASSKEY_FAIL_LEN = 2 ,
+ LMP_OOB_FAIL_LEN = 2 ,
+ LMP_KEYPRESS_NOTIF_LEN = 3 ,
+ LMP_PWR_CTRL_REQ_LEN = 3 ,
+ LMP_PWR_CTRL_RES_LEN = 3 ,
+ LMP_PING_REQ_LEN = 2 ,
+ LMP_PING_RES_LEN = 2 ,
+ LMP_SAM_SET_TYPE0_LEN = 17,
+ LMP_SAM_DEFINE_MAP_LEN = 17,
+ LMP_SAN_SWITCH_LEN = 9,
+};
+
+/// Maximum LMP PDU size (including opcode and ext opcode)
+#define LMP_MAX_PDU_SIZE DM1_PACKET_SIZE
+
+/// Position of transaction ID in 1st byte
+#define LMP_TR_ID_POS 0
+#define LMP_TR_ID_MASK 0x01
+/// Position of opcode in 1st byte
+#define LMP_OPCODE_POS 1
+#define LMP_OPCODE_MASK 0xFE
+
+#define LMP_OPCODE(opcode, tr_id) (((opcode << LMP_OPCODE_POS) & LMP_OPCODE_MASK) | ((tr_id << LMP_TR_ID_POS) & LMP_TR_ID_MASK))
+/*
+ * MESSAGES
+ ****************************************************************************************
+ */
+
+///LMP_name_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_name_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Offset
+ uint8_t offset;
+};
+
+///LMP_name_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_name_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Offset
+ uint8_t offset;
+ ///Name Length
+ uint8_t length;
+ ///Name Fragment
+ struct name_vect name_frag;
+};
+
+///LMP_accepted PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_accepted
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Opcode of the original LMP
+ uint8_t orig_opcode;
+};
+
+///LMP_not_accepted PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_not_accepted
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Opcode of the original LMP
+ uint8_t orig_opcode;
+ ///Reason for not accepting the PDU (error code)
+ uint8_t reason;
+};
+
+///LMP_clkoffset_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_clk_off_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_clkoffset_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_clk_off_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Clock Offset value
+ uint16_t clk_offset ;
+};
+
+///LMP_detach PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_detach
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Reason to detach
+ uint8_t reason;
+};
+
+///LMP_in_rand PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_inrand
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Random number
+ struct ltk random;
+};
+
+///LMP_comb_key PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_combkey
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Random number
+ struct ltk random;
+};
+
+///LMP_unit_key PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_unitkey
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Key
+ struct ltk key;
+};
+
+///LMP_au_rand PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_aurand
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Random number
+ struct ltk random;
+};
+
+///LMP_sres PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_sres
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Authentication Response
+ struct sres_nb Sres;
+};
+
+///LMP_temp_rand PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_temprand
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Random number
+ struct ltk random;
+};
+
+///LMP_temp_key PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_tempkey
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Key
+ struct ltk key;
+};
+
+///LMP_encryption_mode_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_enc_mode_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Encryption Mode
+ uint8_t enc_mode;
+};
+
+///LMP_encryption_key_size_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_enc_key_size_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Key Size
+ uint8_t key_size;
+};
+
+///LMP_start_encryption_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_start_enc_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Random number
+ struct ltk random;
+};
+
+///LMP_stop_encryption_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_stop_enc_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_switch_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_switch_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Switch Instant
+ uint32_t switch_inst;
+};
+
+///LMP_sniff_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_sniff_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ /// Timing Control Flags (bit 1: initialization method 1 or 2)
+ uint8_t flags;
+ /// Offset (in slots)
+ uint16_t d_sniff;
+ /// Interval (in slots)
+ uint16_t t_sniff;
+ /// Attempts (number of receive slots) (in slots)
+ uint16_t sniff_attempt;
+ /// Timeout (number of receive slots) (in slots)
+ uint16_t sniff_to;
+};
+
+///LMP_unsniff_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_unsniff_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_incr_power_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_incr_pwr_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///For future use
+ uint8_t reserved;
+};
+
+///LMP_decr_power_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_decr_pwr_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///For future use
+ uint8_t reserved;
+};
+
+///LMP_max_power PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_max_pwr
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_min_power PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_min_pwr
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_auto_rate PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_auto_rate
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_preferred_rate PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pref_rate
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Data Rate
+ uint8_t rate;
+};
+
+///LMP_version_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ver_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Version number
+ uint8_t ver;
+ ///Company ID
+ uint16_t co_id;
+ ///Subversion number
+ uint16_t subver;
+};
+
+///LMP_version_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ver_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Version number
+ uint8_t ver;
+ ///Company ID
+ uint16_t co_id;
+ ///Subversion number
+ uint16_t subver;
+};
+
+///LMP_features_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_feats_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Features
+ struct features feats;
+};
+
+///LMP_features_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_feats_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Features
+ struct features feats;
+};
+
+///LMP_quality_of_service PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_qos
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Poll interval
+ uint16_t poll_intv;
+ ///Nbc
+ uint8_t nbc;
+};
+
+
+///LMP_quality_of_service_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_qos_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Poll interval
+ uint16_t poll_intv;
+ ///Nbc
+ uint8_t nbc;
+};
+
+///LMP_SCO_link_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_sco_link_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///SCO handle
+ uint8_t sco_hdl;
+ ///timing control flags
+ uint8_t flags;
+ ///Dsco
+ uint8_t d_sco;
+ ///Tsco
+ uint8_t t_sco;
+ ///SCO packet
+ uint8_t sco_pkt;
+ ///Air mode
+ uint8_t air_mode;
+};
+
+///LMP_remove_SCO_link_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_rmv_sco_link_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///SCO handle
+ uint8_t sco_hdl;
+ ///Reason for its removal(error code)
+ uint8_t reason;
+};
+
+///LMP_max_slot PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_max_slot
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Max slots
+ uint8_t max_slots;
+};
+
+
+///LMP_max_slot_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_max_slot_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Max slots
+ uint8_t max_slots;
+};
+
+///LMP_timing_accuracy_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_timing_accu_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_timing_accuracy_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_timing_accu_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Drift
+ uint8_t drift;
+ ///Jitter
+ uint8_t jitter;
+};
+
+///LMP_setup_complete PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_setup_cmp
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_use_semi_permanent_key PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_use_semi_perm_key
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_host_connection_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_host_con_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_slot_offset PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_slot_off
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Slot Offset
+ uint16_t slot_off;
+ ///BD Address
+ struct bd_addr addr;
+};
+
+///LMP_page_mode_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_page_mode_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Paging scheme
+ uint8_t page_scheme;
+ ///Paging scheme settings
+ uint8_t page_stg;
+};
+
+///LMP_page_scan_mode_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_page_scan_mode_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Paging scheme
+ uint8_t page_scheme;
+ ///Paging scheme settings
+ uint8_t page_stg;
+};
+
+///LMP_supervision_timeout PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_supv_to
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ /// Supervision Timeout (in slots, 0 means infinite timeout)
+ uint16_t supv_to;
+};
+
+///LMP_test_activate PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_test_activate
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_test_control PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_test_ctrl
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Test Scenario
+ uint8_t scenario;
+ ///Hopping Mode
+ uint8_t hop;
+ ///Tx frequency
+ uint8_t tx_freq;
+ ///Rx Frequency
+ uint8_t rx_freq;
+ ///Power Control Mode
+ uint8_t pwr_ctrl;
+ ///Poll period
+ uint8_t poll_period;
+ ///Packet type
+ uint8_t pkt_type;
+ ///length of test data
+ uint16_t data_len;
+};
+
+///LMP_encryption_key_size_mask_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_enc_key_size_mask_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+};
+
+///LMP_encryption_key_size_mask_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_enc_key_size_mask_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Encryption Key Size Mask
+ uint16_t mask;
+};
+
+///LMP_set_AFH PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_set_afh
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///AFH Instant
+ uint32_t instant;
+ ///AFH Mode
+ uint8_t mode;
+ ///AFH channel map
+ struct chnl_map map;
+};
+
+///LMP_encapsulated_header PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_encaps_hdr
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Encapsulated major type
+ uint8_t maj_type;
+ ///Encapsulated minor type
+ uint8_t min_type;
+ ///Encapsulated Payload Length
+ uint8_t payl_len;
+};
+
+///LMP_encapsulated_payload PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_encaps_payl
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Encapsulated data
+ struct byte16 data;
+};
+
+///LMP_Simple_Pairing_Confirm PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_sp_cfm
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Commitment Value
+ struct byte16 commitment_val ;
+};
+
+///LMP_Simple_Pairing_Number PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_sp_nb
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///nonce Value
+ struct byte16 nonce;
+};
+
+///LMP_DHkey_check PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_dhkey_chk
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Confirmation Value
+ struct ltk cfm_val;
+};
+
+///LMP_pause_encryption_aes_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pause_enc_aes_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ /// Random Number
+ struct ltk rand;
+};
+
+/*
+ * Extended PDUs parameter structures - Escape 4
+ ****************************************************************************************/
+
+///LMP_accepted_ext PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_accepted_ext
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Escape opcode of the original LMP
+ uint8_t orig_esc_opcode;
+ ///Extended opcode of the original LMP
+ uint8_t orig_ext_opcode;
+};
+
+///LMP_not_accepted_ext PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_not_accepted_ext
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Escape opcode of the original LMP
+ uint8_t orig_esc_opcode;
+ ///Extended opcode of the original LMP
+ uint8_t orig_ext_opcode;
+ ///Reason
+ uint8_t reason;
+};
+
+///LMP_features_req_ext PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_feats_req_ext
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Features page
+ uint8_t page;
+ ///Max supported page
+ uint8_t max_page;
+ ///Extended features
+ struct features ext_feats;
+};
+
+///LMP_features_res_ext PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_feats_res_ext
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Features page
+ uint8_t page;
+ ///Max supported page
+ uint8_t max_page;
+ ///Extended features
+ struct features ext_feats;
+};
+
+///LMP_clk_adj PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_clk_adj
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Coarse clock adjustment Event ID
+ uint8_t clk_adj_id;
+ ///Coarse clock adjustment instant
+ uint32_t clk_adj_instant;
+ ///Coarse clock adjustment intraslot alignment offset
+ int16_t clk_adj_us;
+ ///Coarse clock adjustment slot offset
+ uint8_t clk_adj_slots;
+ ///Coarse clock adjustment mode (before/after instant)
+ uint8_t clk_adj_mode;
+ ///Coarse clock adjustment PDU CLK instant
+ uint32_t clk_adj_clk;
+};
+
+///LMP_clk_adj_ack PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_clk_adj_ack
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Coarse clock adjustment Event ID
+ uint8_t clk_adj_id;
+};
+
+///LMP_clk_adj_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_clk_adj_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Coarse clock adjustment intraslot alignment offset
+ int16_t clk_adj_us;
+ ///Coarse clock adjustment slot offset
+ uint8_t clk_adj_slots;
+ ///Corase clock adjustment period
+ uint8_t clk_adj_period;
+};
+
+///LMP_packet_type_table_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pkt_type_tbl_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Packet Type table
+ uint8_t pkt_type_tbl;
+};
+
+///LMP_SAM_define_map PDU structure
+struct lmp_sam_define_map
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///SAM Index
+ uint8_t index;
+ ///Tsam-sm
+ uint8_t t_sam_sm;
+ ///Nsam-sm
+ uint8_t n_sam_sm;
+ ///SAM Submaps
+ struct sam_submaps submaps;
+};
+
+///LMP_SAM_set_type0 PDU structure
+struct lmp_sam_set_type0
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Update mode
+ uint8_t update_mode;
+ ///SAM Type0 submap
+ struct sam_type0_submap submap;
+};
+
+///LMP_SAM_switch PDU structure
+struct lmp_sam_switch
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///SAM Index
+ uint8_t index;
+ ///timing control flags
+ uint8_t flags;
+ ///Dsam
+ uint8_t d_sam;
+ ///SAM instant
+ uint32_t instant;
+};
+
+///LMP_eSCO_link_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_esco_link_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///eSCO handle
+ uint8_t esco_hdl;
+ ///eSCo LT Address
+ uint8_t esco_lt_addr;
+ ///timing control flags
+ uint8_t flags;
+ ///Desco
+ uint8_t d_esco;
+ ///t_esco
+ uint8_t t_esco;
+ ///Wesco
+ uint8_t w_esco;
+ ///eSCO packet type M2S
+ uint8_t m2s_pkt_type;
+ ///eSCO packet type S2M
+ uint8_t s2m_pkt_type;
+ ///Packet Length M2S
+ uint16_t m2s_pkt_len;
+ ///Packet Length S2m
+ uint16_t s2m_pkt_len;
+ ///Air Mode
+ uint8_t air_mode;
+ ///Negotiation state
+ uint8_t negt_st;
+};
+
+///LMP_remove_eSCO_link_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_rmv_esco_link_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///eSCO handle
+ uint8_t esco_hdl;
+ ///Reason
+ uint8_t reason;
+};
+
+///LMP_channel_classification_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ch_class_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///AFH reporting mode
+ uint8_t rep_mode;
+ ///AFH min interval
+ uint16_t min_intv;
+ ///AFH max interval
+ uint16_t max_intv;
+};
+
+///LMP_channel_classification PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ch_class
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///AFh channel classification
+ struct chnl_map ch_class;
+};
+
+///LMP_sniff_subrating_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ssr_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ /// Maximum sniff sub-rate (in number of sniff events)
+ uint8_t max_subrate;
+ /// Minimum sniff mode timeout (in slots)
+ uint16_t min_to;
+ /// Sniff sub-rating instant (in slots, master clock value)
+ uint32_t instant;
+};
+
+///LMP_sniff_subrating_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ssr_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ /// Maximum sniff sub-rate (in number of sniff events)
+ uint8_t max_subrate;
+ /// Minimum sniff mode timeout (in slots)
+ uint16_t min_to;
+ /// Sniff sub-rating instant (in slots, master clock value)
+ uint32_t instant;
+};
+
+///LMP_pause_encryption_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pause_enc_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+///LMP_resume_encryption_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_resume_enc_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+///LMP_IO_capability_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_io_cap_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///IO Capabilities
+ uint8_t io_cap;
+ /// OOB Authentication data
+ uint8_t oob_auth_data;
+ ///Authentication requirements
+ uint8_t auth_req;
+};
+
+
+///LMP_IO_capability_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_io_cap_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///IO Capabilities
+ uint8_t io_cap;
+ /// OOB Authentication data
+ uint8_t oob_auth_data;
+ ///Authentication requirements
+ uint8_t auth_req;
+};
+
+///LMP_numeric_comparison_failed PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_num_comparison_fail
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+///LMP_passkey_failed PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_passkey_fail
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+///LMP_oob_failed PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_oob_fail
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+///LMP_keypress_notification PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_keypress_notif
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Notification Type
+ uint8_t type;
+};
+
+///LMP_power_control_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pwr_ctrl_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Power adjustment request
+ uint8_t pwr_adj;
+
+};
+
+///LMP_power_control_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_pwr_ctrl_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+ ///Power adjustment response
+ uint8_t pwr_adj;
+};
+
+/// LMP_ping_req PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ping_req
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+/// LMP_ping_res PDU structure
+/*@TRACE
+ * @NO_PAD
+*/
+struct lmp_ping_res
+{
+ ///Opcode (including transaction ID)
+ uint8_t opcode;
+ ///Extended opcode
+ uint8_t ext_opcode;
+};
+
+/// Union of all the LMP message structures
+union lmp_pdu
+{
+ struct lmp_name_req name_req ;
+ struct lmp_name_res name_res ;
+ struct lmp_accepted accepted ;
+ struct lmp_not_accepted not_accepted ;
+ struct lmp_clk_off_req clk_off_req ;
+ struct lmp_clk_off_res clk_off_res ;
+ struct lmp_detach detach ;
+ struct lmp_inrand inrand ;
+ struct lmp_combkey combkey ;
+ struct lmp_unitkey unitkey ;
+ struct lmp_aurand aurand ;
+ struct lmp_sres sres ;
+ struct lmp_temprand temprand ;
+ struct lmp_tempkey tempkey ;
+ struct lmp_enc_mode_req enc_mode_req ;
+ struct lmp_enc_key_size_req enc_key_size_req ;
+ struct lmp_start_enc_req start_enc_req ;
+ struct lmp_stop_enc_req stop_enc_req ;
+ struct lmp_switch_req switch_req ;
+ struct lmp_sniff_req sniff_req ;
+ struct lmp_unsniff_req unsniff_req ;
+ struct lmp_incr_pwr_req incr_pwr_req ;
+ struct lmp_decr_pwr_req decr_pwr_req ;
+ struct lmp_max_pwr max_pwr ;
+ struct lmp_min_pwr min_pwr ;
+ struct lmp_auto_rate auto_rate ;
+ struct lmp_pref_rate pref_rate ;
+ struct lmp_ver_req ver_req ;
+ struct lmp_ver_res ver_res ;
+ struct lmp_feats_req feats_req ;
+ struct lmp_feats_res feats_res ;
+ struct lmp_clk_adj clk_adj ;
+ struct lmp_clk_adj_ack clk_adj_ack ;
+ struct lmp_clk_adj_req clk_adj_req ;
+ struct lmp_qos qos ;
+ struct lmp_qos_req qos_req ;
+ struct lmp_sco_link_req sco_link_req ;
+ struct lmp_rmv_sco_link_req rmv_sco_link_req ;
+ struct lmp_max_slot max_slot ;
+ struct lmp_max_slot_req max_slot_req ;
+ struct lmp_timing_accu_req timing_accu_req ;
+ struct lmp_timing_accu_res timing_accu_res ;
+ struct lmp_setup_cmp setup_cmp ;
+ struct lmp_use_semi_perm_key use_semi_perm_key ;
+ struct lmp_host_con_req host_con_req ;
+ struct lmp_slot_off slot_off ;
+ struct lmp_page_mode_req page_mode_req ;
+ struct lmp_page_scan_mode_req page_scan_mode_req ;
+ struct lmp_supv_to supv_to ;
+ struct lmp_test_activate test_activate ;
+ struct lmp_test_ctrl test_ctrl ;
+ struct lmp_enc_key_size_mask_req enc_key_size_mask_req ;
+ struct lmp_enc_key_size_mask_res enc_key_size_mask_res ;
+ struct lmp_set_afh set_afh ;
+ struct lmp_encaps_hdr encaps_hdr ;
+ struct lmp_encaps_payl encaps_payl ;
+ struct lmp_sp_cfm sp_cfm ;
+ struct lmp_sp_nb sp_nb ;
+ struct lmp_dhkey_chk dhkey_chk ;
+ struct lmp_accepted_ext accepted_ext ;
+ struct lmp_not_accepted_ext not_accepted_ext ;
+ struct lmp_feats_req_ext feats_req_ext ;
+ struct lmp_feats_res_ext feats_res_ext ;
+ struct lmp_pkt_type_tbl_req pkt_type_tbl_req ;
+ struct lmp_sam_define_map sam_define_map ;
+ struct lmp_sam_set_type0 sam_set_type0 ;
+ struct lmp_sam_switch sam_switch ;
+ struct lmp_esco_link_req esco_link_req ;
+ struct lmp_rmv_esco_link_req rmv_esco_link_req ;
+ struct lmp_ch_class_req ch_class_req ;
+ struct lmp_ch_class ch_class ;
+ struct lmp_ssr_req ssr_req ;
+ struct lmp_ssr_res ssr_res ;
+ struct lmp_pause_enc_req pause_enc_req ;
+ struct lmp_resume_enc_req resume_enc_req ;
+ struct lmp_io_cap_req io_cap_req ;
+ struct lmp_io_cap_res io_cap_res ;
+ struct lmp_num_comparison_fail num_comparison_fail ;
+ struct lmp_passkey_fail passkey_fail ;
+ struct lmp_oob_fail oob_fail ;
+ struct lmp_keypress_notif keypress_notif ;
+ struct lmp_pwr_ctrl_req pwr_ctrl_req ;
+ struct lmp_pwr_ctrl_res pwr_ctrl_res ;
+ struct lmp_ping_req ping_req ;
+ struct lmp_ping_res ping_res ;
+};
+
+
+/// @} CO_BT
+#endif // CO_LMP_H_