From b59845d1172b1aafd5d92a6ac5b6187d5ecf20b6 Mon Sep 17 00:00:00 2001 From: nifi Date: Wed, 3 Mar 2010 12:45:39 +0000 Subject: [PATCH] Minor cleanup of radio logger verbose output --- .../se/sics/cooja/plugins/RadioLogger.java | 14 ++++-- .../plugins/analyzers/IEEE802154Analyzer.java | 48 +++++++++++-------- .../plugins/analyzers/IPHCPacketAnalyzer.java | 25 ++++------ 3 files changed, 49 insertions(+), 38 deletions(-) diff --git a/tools/cooja/java/se/sics/cooja/plugins/RadioLogger.java b/tools/cooja/java/se/sics/cooja/plugins/RadioLogger.java index 57527c26b..b1825a370 100644 --- a/tools/cooja/java/se/sics/cooja/plugins/RadioLogger.java +++ b/tools/cooja/java/se/sics/cooja/plugins/RadioLogger.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: RadioLogger.java,v 1.28 2010/02/25 23:44:16 nifi Exp $ + * $Id: RadioLogger.java,v 1.29 2010/03/03 12:45:39 nifi Exp $ */ package se.sics.cooja.plugins; @@ -397,10 +397,15 @@ public class RadioLogger extends VisPlugin { PacketAnalyzer.Packet packet = new PacketAnalyzer.Packet(data, PacketAnalyzer.MAC_LEVEL); if (analyzePacket(packet, brief, verbose)) { - conn.data = (data.length < 10 ? " " : "") + data.length + ": " + brief; if (packet.hasMoreData()) { - conn.data += ": " + StringUtils.toHex(packet.getPayload(), 4); + byte[] payload = packet.getPayload(); + brief.append(StringUtils.toHex(payload, 4)); + verbose.append("Payload (") + .append(payload.length).append(" bytes)
")
+            .append(StringUtils.hexDump(payload))
+            .append("
"); } + conn.data = (data.length < 10 ? " " : "") + data.length + ": " + brief; if (verbose.length() > 0) { conn.tooltip = verbose.toString(); } @@ -420,7 +425,8 @@ public class RadioLogger extends VisPlugin { analyzer.analyzePacket(packet, brief, verbose); /* continue another round if more bytes left */ analyze = packet.hasMoreData(); - brief.append("|"); + brief.append('|'); + verbose.append("

"); break; } } diff --git a/tools/cooja/java/se/sics/cooja/plugins/analyzers/IEEE802154Analyzer.java b/tools/cooja/java/se/sics/cooja/plugins/analyzers/IEEE802154Analyzer.java index a884bda4c..464480bb7 100644 --- a/tools/cooja/java/se/sics/cooja/plugins/analyzers/IEEE802154Analyzer.java +++ b/tools/cooja/java/se/sics/cooja/plugins/analyzers/IEEE802154Analyzer.java @@ -15,22 +15,22 @@ public class IEEE802154Analyzer extends PacketAnalyzer { public static final int ACKFRAME = 0x02; public static final int CMDFRAME = 0x03; - private static final byte[] BROADCAST_ADDR = {(byte)0xff, (byte)0xff}; +// private static final byte[] BROADCAST_ADDR = {(byte)0xff, (byte)0xff}; private static final String[] typeS = {"-", "D", "A"}; - private static final String[] typeVerbose = {"Beacon", "Data", "Ack"}; + private static final String[] typeVerbose = {"BEACON", "DATA", "ACK"}; - private int defaultAddressMode = LONG_ADDRESS; - private byte seqNo = 0; +// private int defaultAddressMode = LONG_ADDRESS; +// private byte seqNo = 0; - private int myPanID = 0xabcd; +// private int myPanID = 0xabcd; public boolean matchPacket(Packet packet) { return packet.level == MAC_LEVEL; } -/* we need better model of this later... */ + /* we need better model of this later... */ public boolean matchPacket(byte[] packet, int level) { return false; } @@ -45,14 +45,14 @@ public class IEEE802154Analyzer extends PacketAnalyzer { public void analyzePacket(Packet packet, StringBuffer brief, StringBuffer verbose) { int pos = packet.pos; int type = packet.data[pos + 0] & 7; - int security = (packet.data[pos + 0] >> 3) & 1; - int pending = (packet.data[pos + 0] >> 4) & 1; - int ackRequired = (packet.data[pos + 0] >> 5) & 1; +// int security = (packet.data[pos + 0] >> 3) & 1; +// int pending = (packet.data[pos + 0] >> 4) & 1; +// int ackRequired = (packet.data[pos + 0] >> 5) & 1; int panCompression = (packet.data[pos + 0]>> 6) & 1; int destAddrMode = (packet.data[pos + 1] >> 2) & 3; - int frameVersion = (packet.data[pos + 1] >> 4) & 3; +// int frameVersion = (packet.data[pos + 1] >> 4) & 3; int srcAddrMode = (packet.data[pos + 1] >> 6) & 3; - int seqNumber = packet.data[pos + 2]; + int seqNumber = packet.data[pos + 2] & 0xff; int destPanID = 0; int srcPanID = 0; byte[] sourceAddress = null; @@ -98,22 +98,32 @@ public class IEEE802154Analyzer extends PacketAnalyzer { } } - int payloadLen = packet.data.length - pos; +// int payloadLen = packet.data.length - pos; brief.append("15.4 "); - brief.append(typeS[type]).append(' '); + brief.append(type < typeS.length ? typeS[type] : "?").append(' '); printAddress(brief, srcAddrMode, sourceAddress); - brief.append(" "); + brief.append(' '); printAddress(brief, destAddrMode, destAddress); - - verbose.append("IEEE 802.15.4
from "); + verbose.append("IEEE 802.15.4 ") + .append(type < typeVerbose.length ? typeVerbose[type] : "?") + .append(' ').append(seqNumber) + .append("
From "); + if (srcPanID != 0) { + verbose.append(StringUtils.toHex((byte)(srcPanID >> 8))) + .append(StringUtils.toHex((byte)(srcPanID & 0xff))) + .append('/'); + } printAddress(verbose, srcAddrMode, sourceAddress); verbose.append(" to "); + if (destPanID != 0) { + verbose.append(StringUtils.toHex((byte)(destPanID >> 8))) + .append(StringUtils.toHex((byte)(destPanID & 0xff))) + .append('/'); + } printAddress(verbose, destAddrMode, destAddress); - verbose.append("
FrameType: : " + typeVerbose[type]); - verbose.append("
Payload len: " + payloadLen); - verbose.append("
"); + // verbose.append("
Payload len: ").append(payloadLen); /* update packet */ packet.pos = pos; diff --git a/tools/cooja/java/se/sics/cooja/plugins/analyzers/IPHCPacketAnalyzer.java b/tools/cooja/java/se/sics/cooja/plugins/analyzers/IPHCPacketAnalyzer.java index 29d6df1c8..a6ec2dfbb 100644 --- a/tools/cooja/java/se/sics/cooja/plugins/analyzers/IPHCPacketAnalyzer.java +++ b/tools/cooja/java/se/sics/cooja/plugins/analyzers/IPHCPacketAnalyzer.java @@ -79,7 +79,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer { int sci = 0; int dci = 0; - brief.append("iphc tf=" + tf + (nh == 1 ? " nh" : "") + " hl=" + hlim + (cid == 1 ? " cid " : "")); + brief.append("IPHC tf=" + tf + (nh == 1 ? " nh" : "") + " hl=" + hlim + (cid == 1 ? " cid " : "")); brief.append((sac == 1 ? " sac" : "") + " sam=" + sam + (m == 1 ? " M" : "") + (dac == 1 ? " dac" : " -") + " dam=" + dam); @@ -88,12 +88,13 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer { } /* need to decompress while analyzing - add that later... */ - verbose.append("
IPHC HC-06
"); - verbose.append("tf = " + tf + " nhc = " + nh + " hlim = " + hlim + " cid = " + cid); - verbose.append("sac = " + sac + " sam = " + sam + " MCast = " + m + " dac = " + dac + - " dam = " + dam + "
"); + verbose.append("IPHC HC-06
"); + verbose.append("tf = " + tf + " nhc = " + nh + " hlim = " + hlim + + " cid = " + cid + " sac = " + sac + " sam = " + sam + + " MCast = " + m + " dac = " + dac + " dam = " + dam + "
"); if (cid == 1) { - verbose.append("Contexts: sci=" + (packet.get(2) >> 4) + " dci=" + (packet.get(2) & 0x0f)); + verbose.append("Contexts: sci=" + (packet.get(2) >> 4) + " dci=" + + (packet.get(2) & 0x0f) + "
"); sci = packet.get(2) >> 4; dci = packet.get(2) & 0x0f; } @@ -403,20 +404,14 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer { else if (proto == PROTO_UDP) protoStr = "UDP"; else if (proto == PROTO_TCP) protoStr = "TCP"; - verbose.append("
IPv6 Packet: ").append(protoStr).append("
"); - verbose.append("From: "); + verbose.append("
IPv6 ").append(protoStr).append("
"); + verbose.append("From "); printAddress(verbose, srcAddress); verbose.append(" to "); printAddress(verbose, destAddress); - verbose.append("
"); - brief.append("|").append(StringUtils.toHex(packet.getPayload(), 4)); - verbose.append("Payload:

").append(StringUtils.hexDump(packet.getPayload())).
-        append("
"); - - packet.pos = packet.data.length; +// packet.pos = packet.data.length; packet.level = NETWORK_LEVEL; - } public static void printAddress(StringBuffer out, byte[] address) {