summaryrefslogtreecommitdiff
path: root/monitor/lmp.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2014-01-08 10:34:08 -0800
committerMarcel Holtmann <marcel@holtmann.org>2014-01-08 10:34:08 -0800
commitfc5bd197aa30c3b3d47e918e7659dca31b0be731 (patch)
treeb24351cd6565e3488f72592af70bc1f8648fdcbc /monitor/lmp.c
parent4d705a845152bd5f33a86f3bd84598d0835171d9 (diff)
downloadbluez-fc5bd197aa30c3b3d47e918e7659dca31b0be731.tar.gz
monitor: Add decoding of LMP operations with empty PDU
Diffstat (limited to 'monitor/lmp.c')
-rw-r--r--monitor/lmp.c84
1 files changed, 70 insertions, 14 deletions
diff --git a/monitor/lmp.c b/monitor/lmp.c
index 0a8b4d35f..250c8f19a 100644
--- a/monitor/lmp.c
+++ b/monitor/lmp.c
@@ -70,6 +70,10 @@ static void not_accepted(const void *data, uint8_t size)
packet_print_error("Error code", pdu->error);
}
+static void clkoffset_req(const void *data, uint8_t size)
+{
+}
+
static void detach(const void *data, uint8_t size)
{
const struct bt_lmp_detach *pdu = data;
@@ -132,6 +136,18 @@ static void stop_encryption_req(const void *data, uint8_t size)
{
}
+static void unsniff_req(const void *data, uint8_t size)
+{
+}
+
+static void max_power(const void *data, uint8_t size)
+{
+}
+
+static void min_power(const void *data, uint8_t size)
+{
+}
+
static void auto_rate(const void *data, uint8_t size)
{
}
@@ -198,6 +214,10 @@ static void setup_complete(const void *data, uint8_t size)
{
}
+static void use_semi_permanent_key(const void *data, uint8_t size)
+{
+}
+
static void host_connection_req(const void *data, uint8_t size)
{
}
@@ -239,6 +259,14 @@ static void page_scan_mode_req(const void *data, uint8_t size)
print_field("Paging scheme settings: %s (%u)", str, pdu->settings);
}
+static void test_activate(const void *data, uint8_t size)
+{
+}
+
+static void encryption_key_size_mask_req(const void *data, uint8_t size)
+{
+}
+
static void set_afh(const void *data, uint8_t size)
{
const struct bt_lmp_set_afh *pdu = data;
@@ -422,6 +450,14 @@ static void channel_classification(const void *data, uint8_t size)
print_field("Features: 0x%s", str);
}
+static void pause_encryption_req(const void *data, uint8_t size)
+{
+}
+
+static void resume_encryption_req(const void *data, uint8_t size)
+{
+}
+
static void io_capability_req(const void *data, uint8_t size)
{
const struct bt_lmp_io_capability_req *pdu = data;
@@ -470,6 +506,18 @@ static void io_capability_res(const void *data, uint8_t size)
packet_print_io_authentication(pdu->authentication);
}
+static void numeric_comparison_failed(const void *data, uint8_t size)
+{
+}
+
+static void passkey_failed(const void *data, uint8_t size)
+{
+}
+
+static void oob_failed(const void *data, uint8_t size)
+{
+}
+
static void power_control_req(const void *data, uint8_t size)
{
const struct bt_lmp_power_control_req *pdu = data;
@@ -561,6 +609,14 @@ static void power_control_res(const void *data, uint8_t size)
print_field(" 8DPSK: %s", str);
}
+static void ping_req(const void *data, uint8_t size)
+{
+}
+
+static void ping_res(const void *data, uint8_t size)
+{
+}
+
struct lmp_data {
uint16_t opcode;
const char *str;
@@ -574,7 +630,7 @@ static const struct lmp_data lmp_table[] = {
{ 2, "LMP_name_res" },
{ 3, "LMP_accepted", accepted, 1, true },
{ 4, "LMP_not_accepted", not_accepted, 2, true },
- { 5, "LMP_clkoffset_req" },
+ { 5, "LMP_clkoffset_req", clkoffset_req, 0, true },
{ 6, "LMP_clkoffset_res" },
{ 7, "LMP_detach", detach, 1, true },
{ 8, "LMP_in_rand" },
@@ -593,7 +649,7 @@ static const struct lmp_data lmp_table[] = {
{ 21, "LMP_hold_req" },
{ 22, "LMP_sniff" },
{ 23, "LMP_sniff_req" },
- { 24, "LMP_unsniff_req" },
+ { 24, "LMP_unsniff_req", unsniff_req, 0, true },
{ 25, "LMP_park_req" },
{ 26, "LMP_park" },
{ 27, "LMP_set_broadcast_scan_window" },
@@ -602,8 +658,8 @@ static const struct lmp_data lmp_table[] = {
{ 30, "LMP_unpark_PM_ADDR_req" },
{ 31, "LMP_incr_power_req" },
{ 32, "LMP_decr_power_req" },
- { 33, "LMP_max_power" },
- { 34, "LMP_min_power" },
+ { 33, "LMP_max_power", max_power, 0, true },
+ { 34, "LMP_min_power", min_power, 0, true },
{ 35, "LMP_auto_rate", auto_rate, 0, true },
{ 36, "LMP_preferred_rate" },
{ 37, "LMP_version_req", version_req, 5, true },
@@ -619,15 +675,15 @@ static const struct lmp_data lmp_table[] = {
{ 47, "LMP_timing_accuracy_req", timing_accuracy_req, 0, true },
{ 48, "LMP_timing_accuracy_res", timing_accuracy_res, 2, true },
{ 49, "LMP_setup_complete", setup_complete, 0, true },
- { 50, "LMP_use_semi_permanent_key" },
+ { 50, "LMP_use_semi_permanent_key", use_semi_permanent_key, 0, true },
{ 51, "LMP_host_connection_req", host_connection_req, 0, true },
{ 52, "LMP_slot_offset" },
{ 53, "LMP_page_mode_req" },
{ 54, "LMP_page_scan_mode_req", page_scan_mode_req, 2, true },
{ 55, "LMP_supervision_timeout" },
- { 56, "LMP_test_activate" },
+ { 56, "LMP_test_activate", test_activate, 0, true },
{ 57, "LMP_test_control" },
- { 58, "LMP_encryption_key_size_mask_req" },
+ { 58, "LMP_encryption_key_size_mask_req", encryption_key_size_mask_req, 0, true },
{ 59, "LMP_encryption_key_size_mask_res" },
{ 60, "LMP_set_AFH", set_afh, 15, true },
{ 61, "LMP_encapsulated_header", encapsulated_header, 3, true },
@@ -650,18 +706,18 @@ static const struct lmp_data lmp_table[] = {
{ LMP_ESC4(17), "LMP_channel_classification", channel_classification, 10, true },
{ LMP_ESC4(21), "LMP_sniff_subrating_req" },
{ LMP_ESC4(22), "LMP_sniff_subrating_res" },
- { LMP_ESC4(23), "LMP_pause_encryption_req" },
- { LMP_ESC4(24), "LMP_resume_encryption_req" },
+ { LMP_ESC4(23), "LMP_pause_encryption_req", pause_encryption_req, 0, true },
+ { LMP_ESC4(24), "LMP_resume_encryption_req", resume_encryption_req, 0, true },
{ LMP_ESC4(25), "LMP_IO_capability_req", io_capability_req, 3, true },
{ LMP_ESC4(26), "LMP_IO_capability_res", io_capability_res, 3, true },
- { LMP_ESC4(27), "LMP_numeric_comparision_failed" },
- { LMP_ESC4(28), "LMP_passkey_failed" },
- { LMP_ESC4(29), "LMP_oob_failed" },
+ { LMP_ESC4(27), "LMP_numeric_comparison_failed", numeric_comparison_failed, 0, true },
+ { LMP_ESC4(28), "LMP_passkey_failed", passkey_failed, 0, true },
+ { LMP_ESC4(29), "LMP_oob_failed", oob_failed, 0, true },
{ LMP_ESC4(30), "LMP_keypress_notification" },
{ LMP_ESC4(31), "LMP_power_control_req", power_control_req, 1, true },
{ LMP_ESC4(32), "LMP_power_control_res", power_control_res, 1, true },
- { LMP_ESC4(33), "LMP_ping_req" },
- { LMP_ESC4(34), "LMP_ping_res" },
+ { LMP_ESC4(33), "LMP_ping_req", ping_req, 0, true },
+ { LMP_ESC4(34), "LMP_ping_res", ping_res, 0, true },
{ }
};