From c88a735318a65d0d29dc46269044d9f2bd0ba6a9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 4 Oct 2015 23:39:59 +0200 Subject: [PATCH] monitor: Add support for open and close index events --- android/bluetoothd-snoop.c | 3 +++ monitor/analyze.c | 3 +++ monitor/packet.c | 30 ++++++++++++++++++++++++++++++ monitor/packet.h | 2 ++ src/shared/btsnoop.c | 3 +++ src/shared/btsnoop.h | 2 ++ 6 files changed, 43 insertions(+) diff --git a/android/bluetoothd-snoop.c b/android/bluetoothd-snoop.c index 035875a0d..75f58cc9e 100644 --- a/android/bluetoothd-snoop.c +++ b/android/bluetoothd-snoop.c @@ -73,6 +73,9 @@ static uint32_t get_flags_from_opcode(uint16_t opcode) case BTSNOOP_OPCODE_SCO_TX_PKT: case BTSNOOP_OPCODE_SCO_RX_PKT: break; + case BTSNOOP_OPCODE_OPEN_INDEX: + case BTSNOOP_OPCODE_CLOSE_INDEX: + break; } return 0xff; diff --git a/monitor/analyze.c b/monitor/analyze.c index eea3c9ee9..47ae45fb4 100644 --- a/monitor/analyze.c +++ b/monitor/analyze.c @@ -309,6 +309,9 @@ void analyze_trace(const char *path) case BTSNOOP_OPCODE_SCO_RX_PKT: sco_pkt(&tv, index, buf, pktlen); break; + case BTSNOOP_OPCODE_OPEN_INDEX: + case BTSNOOP_OPCODE_CLOSE_INDEX: + break; default: fprintf(stderr, "Wrong opcode %u\n", opcode); goto done; diff --git a/monitor/packet.c b/monitor/packet.c index d6c74e927..3404b7548 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -59,6 +59,8 @@ #define COLOR_NEW_INDEX COLOR_GREEN #define COLOR_DEL_INDEX COLOR_RED +#define COLOR_OPEN_INDEX COLOR_GREEN +#define COLOR_CLOSE_INDEX COLOR_RED #define COLOR_HCI_COMMAND COLOR_BLUE #define COLOR_HCI_COMMAND_UNKNOWN COLOR_WHITE_BG @@ -3722,6 +3724,22 @@ void packet_monitor(struct timeval *tv, uint16_t index, uint16_t opcode, case BTSNOOP_OPCODE_SCO_RX_PKT: packet_hci_scodata(tv, index, true, data, size); break; + case BTSNOOP_OPCODE_OPEN_INDEX: + if (index < MAX_INDEX) + addr2str(index_list[index].bdaddr, str); + else + sprintf(str, "00:00:00:00:00:00"); + + packet_open_index(tv, index, str); + break; + case BTSNOOP_OPCODE_CLOSE_INDEX: + if (index < MAX_INDEX) + addr2str(index_list[index].bdaddr, str); + else + sprintf(str, "00:00:00:00:00:00"); + + packet_close_index(tv, index, str); + break; default: sprintf(extra_str, "(code %d len %d)", opcode, size); print_packet(tv, index, '*', COLOR_ERROR, @@ -8447,6 +8465,18 @@ void packet_del_index(struct timeval *tv, uint16_t index, const char *label) label, NULL); } +void packet_open_index(struct timeval *tv, uint16_t index, const char *label) +{ + print_packet(tv, index, '=', COLOR_OPEN_INDEX, "Open Index", + label, NULL); +} + +void packet_close_index(struct timeval *tv, uint16_t index, const char *label) +{ + print_packet(tv, index, '=', COLOR_CLOSE_INDEX, "Close Index", + label, NULL); +} + void packet_hci_command(struct timeval *tv, uint16_t index, const void *data, uint16_t size) { diff --git a/monitor/packet.h b/monitor/packet.h index c39816bc6..e1427725d 100644 --- a/monitor/packet.h +++ b/monitor/packet.h @@ -63,6 +63,8 @@ void packet_simulator(struct timeval *tv, uint16_t frequency, void packet_new_index(struct timeval *tv, uint16_t index, const char *label, uint8_t type, uint8_t bus, const char *name); void packet_del_index(struct timeval *tv, uint16_t index, const char *label); +void packet_open_index(struct timeval *tv, uint16_t index, const char *label); +void packet_close_index(struct timeval *tv, uint16_t index, const char *label); void packet_hci_command(struct timeval *tv, uint16_t index, const void *data, uint16_t size); diff --git a/src/shared/btsnoop.c b/src/shared/btsnoop.c index 3592c2ed5..2aa1b8dde 100644 --- a/src/shared/btsnoop.c +++ b/src/shared/btsnoop.c @@ -242,6 +242,9 @@ static uint32_t get_flags_from_opcode(uint16_t opcode) case BTSNOOP_OPCODE_SCO_TX_PKT: case BTSNOOP_OPCODE_SCO_RX_PKT: break; + case BTSNOOP_OPCODE_OPEN_INDEX: + case BTSNOOP_OPCODE_CLOSE_INDEX: + break; } return 0xff; diff --git a/src/shared/btsnoop.h b/src/shared/btsnoop.h index 967598083..552337be0 100644 --- a/src/shared/btsnoop.h +++ b/src/shared/btsnoop.h @@ -43,6 +43,8 @@ #define BTSNOOP_OPCODE_ACL_RX_PKT 5 #define BTSNOOP_OPCODE_SCO_TX_PKT 6 #define BTSNOOP_OPCODE_SCO_RX_PKT 7 +#define BTSNOOP_OPCODE_OPEN_INDEX 8 +#define BTSNOOP_OPCODE_CLOSE_INDEX 9 #define BTSNOOP_MAX_PACKET_SIZE (1486 + 4) -- 2.47.3