Diff between 542f1520df76259755f8379222d42a2b6a44dcdb and 491aae5540b41dbdfe67617a911b9e750a60ab13

Changed Files

File Additions Deletions Status
monitor/packet.c +19 -0 modified
monitor/packet.h +2 -0 modified

Full Patch

diff --git a/monitor/packet.c b/monitor/packet.c
index c4da2ca..1d69c17 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -70,6 +70,8 @@
 #define COLOR_UNKNOWN_LE_STATES		COLOR_WHITE_BG
 #define COLOR_UNKNOWN_SERVICE_CLASS	COLOR_WHITE_BG
 
+#define COLOR_PHY_PACKET		COLOR_BLUE
+
 static time_t time_offset = ((time_t) -1);
 static unsigned long filter_mask = 0;
 static bool index_filter = false;
@@ -2277,6 +2279,23 @@ void packet_monitor(struct timeval *tv, uint16_t index, uint16_t opcode,
 	}
 }
 
+void packet_simulator(struct timeval *tv, uint16_t frequency,
+					const void *data, uint16_t size)
+{
+	char label[20];
+	char extra[20];
+
+	if (tv && time_offset == ((time_t) -1))
+		time_offset = tv->tv_sec;
+
+	sprintf(label, "Physical packet: %u MHz", frequency);
+	sprintf(extra, "(Channel %u)", (frequency - 2402) / 2);
+
+	print_packet(tv, 0, '*', COLOR_PHY_PACKET, label, NULL, extra);
+
+	packet_hexdump(data, size);
+}
+
 static void null_cmd(const void *data, uint8_t size)
 {
 }
diff --git a/monitor/packet.h b/monitor/packet.h
index ba57e9e..fdbe51d 100644
--- a/monitor/packet.h
+++ b/monitor/packet.h
@@ -45,6 +45,8 @@ void packet_control(struct timeval *tv, uint16_t index, uint16_t opcode,
 					const void *data, uint16_t size);
 void packet_monitor(struct timeval *tv, uint16_t index, uint16_t opcode,
 					const void *data, uint16_t size);
+void packet_simulator(struct timeval *tv, uint16_t frequency,
+					const void *data, uint16_t size);
 
 void packet_new_index(struct timeval *tv, uint16_t index, const char *label,
 				uint8_t type, uint8_t bus, const char *name);