diff --git a/monitor/avdtp.c b/monitor/avdtp.c
index 3524faa..006daf3 100644
--- a/monitor/avdtp.c
+++ b/monitor/avdtp.c
ret = avdtp_signalling_packet(&avdtp_frame);
break;
default:
- packet_hexdump(frame->data, frame->size);
+ if (packet_has_filter(PACKET_FILTER_SHOW_A2DP_STREAM))
+ packet_hexdump(frame->data, frame->size);
return;
}
diff --git a/monitor/main.c b/monitor/main.c
index f9bca22..b4e9a6a 100644
--- a/monitor/main.c
+++ b/monitor/main.c
"\t-t, --time Show time instead of time offset\n"
"\t-T, --date Show time and date information\n"
"\t-S, --sco Dump SCO traffic\n"
+ "\t-A, --a2dp Dump A2DP stream traffic\n"
"\t-E, --ellisys [ip] Send Ellisys HCI Injection\n"
"\t-h, --help Show help options\n");
}
{ "time", no_argument, NULL, 't' },
{ "date", no_argument, NULL, 'T' },
{ "sco", no_argument, NULL, 'S' },
+ { "a2dp", no_argument, NULL, 'A' },
{ "ellisys", required_argument, NULL, 'E' },
{ "todo", no_argument, NULL, '#' },
{ "version", no_argument, NULL, 'v' },
for (;;) {
int opt;
- opt = getopt_long(argc, argv, "d:r:w:a:s:p:i:tTSE:vh",
+ opt = getopt_long(argc, argv, "d:r:w:a:s:p:i:tTSAE:vh",
main_options, NULL);
if (opt < 0)
break;
case 'S':
filter_mask |= PACKET_FILTER_SHOW_SCO_DATA;
break;
+ case 'A':
+ filter_mask |= PACKET_FILTER_SHOW_A2DP_STREAM;
+ break;
case 'E':
ellisys_server = optarg;
ellisys_port = 24352;
diff --git a/monitor/packet.c b/monitor/packet.c
index 2e09dda..a93140a 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
return 0xff;
}
+bool packet_has_filter(unsigned long filter)
+{
+ return filter_mask & filter;
+}
+
void packet_set_filter(unsigned long filter)
{
filter_mask = filter;
diff --git a/monitor/packet.h b/monitor/packet.h
index 354f4fe..a4fdcc6 100644
--- a/monitor/packet.h
+++ b/monitor/packet.h
#define PACKET_FILTER_SHOW_TIME_OFFSET (1 << 3)
#define PACKET_FILTER_SHOW_ACL_DATA (1 << 4)
#define PACKET_FILTER_SHOW_SCO_DATA (1 << 5)
+#define PACKET_FILTER_SHOW_A2DP_STREAM (1 << 6)
+bool packet_has_filter(unsigned long filter);
void packet_set_filter(unsigned long filter);
void packet_add_filter(unsigned long filter);
void packet_del_filter(unsigned long filter);