Diff between 6db3470c2ea161b4b808ad1fc80dfd7e014fd359 and 008093fc1c05fab0a6194f5405de879569997641

Changed Files

File Additions Deletions Status
monitor/avdtp.c +2 -1 modified
monitor/main.c +6 -1 modified
monitor/packet.c +5 -0 modified
monitor/packet.h +2 -0 modified

Full Patch

diff --git a/monitor/avdtp.c b/monitor/avdtp.c
index 3524faa..006daf3 100644
--- a/monitor/avdtp.c
+++ b/monitor/avdtp.c
@@ -776,7 +776,8 @@ void avdtp_packet(const struct l2cap_frame *frame)
 		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
@@ -69,6 +69,7 @@ static void usage(void)
 		"\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");
 }
@@ -85,6 +86,7 @@ static const struct option main_options[] = {
 	{ "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' },
@@ -113,7 +115,7 @@ int main(int argc, char *argv[])
 	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;
@@ -167,6 +169,9 @@ int main(int argc, char *argv[])
 		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
@@ -221,6 +221,11 @@ static uint8_t get_type(uint16_t handle)
 	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
@@ -33,7 +33,9 @@
 #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);