diff --git a/monitor/bt.h b/monitor/bt.h
index 9ca3e7c..1c753b6 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
uint8_t reason;
} __attribute__ ((packed));
+#define BT_LL_FEATURE_EXT_REQ 0x2b
+struct bt_ll_feature_ext_req {
+ uint8_t max_page;
+ uint8_t page;
+ uint8_t features[24];
+} __attribute__ ((packed));
+
+#define BT_LL_FEATURE_EXT_RSP 0x2c
+struct bt_ll_feature_ext_rsp {
+ uint8_t max_page;
+ uint8_t page;
+ uint8_t features[24];
+} __attribute__ ((packed));
+
#define LMP_ESC4(x) ((127 << 8) | (x))
#define BT_LMP_NAME_REQ 1
diff --git a/monitor/ll.c b/monitor/ll.c
index 34dddcb..4d65d18 100644
--- a/monitor/ll.c
+++ b/monitor/ll.c
packet_print_error("Reason", ind->reason);
}
+static void feature_ext_req(const void *data, uint8_t size)
+{
+ const struct bt_ll_feature_ext_req *req = data;
+
+ print_field("Max page: %u", req->max_page);
+ print_field("Page: %u", req->page);
+ packet_print_features_ext_ll(req->page, req->features);
+}
+
+static void feature_ext_rsp(const void *data, uint8_t size)
+{
+ const struct bt_ll_feature_ext_req *rsp = data;
+
+ print_field("Max page: %u", rsp->max_page);
+ print_field("Page: %u", rsp->page);
+ packet_print_features_ext_ll(rsp->page, rsp->features);
+}
+
struct llcp_data {
uint8_t opcode;
const char *str;
{ BT_LL_CIS_TERMINATE_IND, "LL_CIS_TERMINATE_IND", cis_term_ind,
sizeof(struct bt_ll_cis_term_ind),
true },
+ { BT_LL_FEATURE_REQ, "LL_FEATURE_EXT_REQ", feature_ext_req,
+ sizeof(struct bt_ll_feature_ext_req),
+ true },
+ { BT_LL_CIS_RSP, "LL_FEATURE_EXT_RSP", feature_ext_rsp,
+ sizeof(struct bt_ll_feature_ext_rsp),
+ true },
{ }
};
diff --git a/monitor/packet.c b/monitor/packet.c
index b4da665..ceed853 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
print_features(0, features, 0x01);
}
+void packet_print_features_ext_ll(uint8_t page, const uint8_t *features)
+{
+ print_features(page, features, 0x01);
+}
+
void packet_print_features_msft(const uint8_t *features)
{
print_features(0, features, 0xf0);
diff --git a/monitor/packet.h b/monitor/packet.h
index 154a08e..2990b79 100644
--- a/monitor/packet.h
+++ b/monitor/packet.h
void packet_print_ad(const void *data, uint8_t size);
void packet_print_features_lmp(const uint8_t *features, uint8_t page);
void packet_print_features_ll(const uint8_t *features);
+void packet_print_features_ext_ll(uint8_t page, const uint8_t *features);
void packet_print_features_msft(const uint8_t *features);
void packet_print_channel_map_lmp(const uint8_t *map);
void packet_print_channel_map_ll(const uint8_t *map);