1567 lines
38 KiB
C
1567 lines
38 KiB
C
/**
|
|
****************************************************************************************
|
|
*
|
|
* @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
|
|
|
|
/**
|
|
* Opcode and TrID in the first byte
|
|
*
|
|
* 7 6 5 4 3 2 1 0
|
|
* +----+----+----+----+----+----+----+----+
|
|
* | opcode | Tid|
|
|
* +----+----+----+----+----+----+----+----+
|
|
*/
|
|
enum lmp_opcode_trid
|
|
{
|
|
/// Position of transaction ID in 1st byte
|
|
LMP_TR_ID_POS = 0,
|
|
LMP_TR_ID_BIT = 0x01,
|
|
/// Position of opcode in 1st byte
|
|
LMP_OPCODE_LSB = 1,
|
|
LMP_OPCODE_MASK = 0xFE,
|
|
};
|
|
|
|
#define LMP_OPCODE(opcode, tr_id) (((opcode << LMP_OPCODE_LSB) & LMP_OPCODE_MASK) | ((tr_id << LMP_TR_ID_POS) & LMP_TR_ID_BIT))
|
|
/*
|
|
* 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 (in ppm)
|
|
uint8_t drift;
|
|
///Jitter (in us)
|
|
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 nego_state;
|
|
};
|
|
|
|
///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_
|