Commit 45bdff15 authored by Wolfgang Puffitsch's avatar Wolfgang Puffitsch Committed by Anas Nashif
Browse files

Bluetooth: controller: Add CIS-related LL control PDU types



Add definitions for LL_CIS_REQ, LL_CIS_RSP, and LL_CIS_IND PDUs.

Signed-off-by: default avatarWolfgang Puffitsch <wopu@demant.com>
parent 119d22a7
Loading
Loading
Loading
Loading
+71 −0
Original line number Diff line number Diff line
@@ -432,6 +432,10 @@ enum pdu_data_llctrl_type {
	PDU_DATA_LLCTRL_TYPE_PHY_RSP = 0x17,
	PDU_DATA_LLCTRL_TYPE_PHY_UPD_IND = 0x18,
	PDU_DATA_LLCTRL_TYPE_MIN_USED_CHAN_IND = 0x19,
	PDU_DATA_LLCTRL_TYPE_CIS_REQ = 0x1F,
	PDU_DATA_LLCTRL_TYPE_CIS_RSP = 0x20,
	PDU_DATA_LLCTRL_TYPE_CIS_IND = 0x21,
	PDU_DATA_LLCTRL_TYPE_CIS_TERMINATE_IND = 0x22,
};

struct pdu_data_llctrl_conn_update_ind {
@@ -584,6 +588,69 @@ struct pdu_data_llctrl_min_used_chans_ind {
	uint8_t min_used_chans;
} __packed;

struct pdu_data_llctrl_cis_req {
	uint8_t cig_id;
	uint8_t cis_id;
	uint8_t c_phy;
	uint8_t p_phy;
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
	uint16_t c_max_sdu:12;
	uint16_t rfu0:3;
	uint16_t framed:1;
	uint16_t p_max_sdu:12;
	uint16_t rfu1:4;
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
	uint16_t framed:1;
	uint16_t rfu0:3;
	uint16_t c_max_sdu:12;
	uint16_t rfu1:4;
	uint16_t p_max_sdu:12;
#else
#error "Unsupported endianness"
#endif
	uint8_t  c_sdu_interval[3];
	uint8_t  p_sdu_interval[3];
	uint16_t c_max_pdu;
	uint16_t p_max_pdu;
	uint8_t  nse;
	uint8_t  sub_interval[3];
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
	uint8_t  c_bn:4;
	uint8_t  p_bn:4;
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
	uint8_t  p_bn:4;
	uint8_t  c_bn:4;
#else
#error "Unsupported endianness"
#endif
	uint8_t  c_ft;
	uint8_t  p_ft;
	uint16_t iso_interval;
	uint8_t  cis_offset_min[3];
	uint8_t  cis_offset_max[3];
	uint16_t conn_event_count;
} __packed;

struct pdu_data_llctrl_cis_rsp {
	uint8_t  cis_offset_min[3];
	uint8_t  cis_offset_max[3];
	uint16_t conn_event_count;
} __packed;

struct pdu_data_llctrl_cis_ind {
	uint32_t aa;
	uint8_t  cis_offset[3];
	uint8_t  cig_sync_delay[3];
	uint8_t  cis_sync_delay[3];
	uint16_t conn_event_count;
} __packed;

struct pdu_data_llctrl_cis_terminate_ind {
	uint8_t  cig_id;
	uint8_t  cis_id;
	uint8_t  error_code;
} __packed;

struct pdu_data_llctrl {
	uint8_t opcode;
	union {
@@ -613,6 +680,10 @@ struct pdu_data_llctrl {
		struct pdu_data_llctrl_phy_rsp phy_rsp;
		struct pdu_data_llctrl_phy_upd_ind phy_upd_ind;
		struct pdu_data_llctrl_min_used_chans_ind min_used_chans_ind;
		struct pdu_data_llctrl_cis_req cis_req;
		struct pdu_data_llctrl_cis_rsp cis_rsp;
		struct pdu_data_llctrl_cis_ind cis_ind;
		struct pdu_data_llctrl_cis_terminate_ind cis_terminate_ind;
	} __packed;
} __packed;