uint8_t error;
} __attribute__ ((packed));
+#define BT_LMP_DETACH 7
+struct bt_lmp_detach {
+ uint8_t error;
+} __attribute__ ((packed));
+
#define BT_LMP_VERSION_REQ 37
struct bt_lmp_version_req {
uint8_t version;
uint8_t features[8];
} __attribute__ ((packed));
+#define BT_LMP_SETUP_COMPLETE 49
+
#define BT_LMP_ACCEPTED_EXT LMP_ESC4(1)
struct bt_lmp_accepted_ext {
uint8_t escape;
{
const struct bt_ll_terminate_ind *pdu = data;
- print_field("Error code: 0x%2.2x", pdu->error);
+ packet_print_error("Error code", pdu->error);
}
static void enc_req(const void *data, uint8_t size)
{
const struct bt_ll_reject_ind *pdu = data;
- print_field("Error code: 0x%2.2x", pdu->error);
+ packet_print_error("Error code", pdu->error);
}
struct llcp_data {
const struct bt_lmp_not_accepted *pdu = data;
print_opcode(pdu->opcode);
- print_field("Error code: %u", pdu->error);
+ packet_print_error("Error code", pdu->error);
+}
+
+static void detach(const void *data, uint8_t size)
+{
+ const struct bt_lmp_detach *pdu = data;
+
+ packet_print_error("Error code", pdu->error);
}
static void version_req(const void *data, uint8_t size)
packet_print_features_lmp(pdu->features, 0x00);
}
+static void setup_complete(const void *data, uint8_t size)
+{
+}
+
static void accepted_ext(const void *data, uint8_t size)
{
const struct bt_lmp_accepted_ext *pdu = data;
{ 4, "LMP_not_accepted", not_accepted, 2, true },
{ 5, "LMP_clkoffset_req" },
{ 6, "LMP_clkoffset_res" },
- { 7, "LMP_detach" },
+ { 7, "LMP_detach", detach, 1, true },
{ 8, "LMP_in_rand" },
{ 9, "LMP_comb_key" },
{ 10, "LMP_unit_key" },
{ 46, "LMP_max_slot_req" },
{ 47, "LMP_timing_accuracy_req" },
{ 48, "LMP_timing_accuracy_res" },
- { 49, "LMP_setup_complete" },
+ { 49, "LMP_setup_complete", setup_complete, 0, true },
{ 50, "LMP_use_semi_permanent_key" },
{ 51, "LMP_host_connection_req" },
{ 52, "LMP_slot_offset" },
void packet_select_index(uint16_t index);
void packet_hexdump(const unsigned char *buf, uint16_t len);
+void packet_print_error(const char *label, uint8_t error);
void packet_print_version(const char *label, uint8_t version,
const char *sublabel, uint16_t subversion);
void packet_print_company(const char *label, uint16_t company);