⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radiologger.java

📁 Contiki是一个开源
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        ((data[20] & 0xFF) << 24) +        ((data[21] & 0xFF) << 16) +        ((data[22] & 0xFF) << 8) +        ((data[23] & 0xFF) << 0);      return seqNo;    }    public String getShortDescription() {      return "AODV RREQ to " + getDestAddr() + " from " + getOrigAddr();    }    public String getToolTip() {      return "<html>" +      "AODV RREQ type: " + getType() + "<br>" +      "AODV RREQ flags: " + getFlags() + "<br>" +      "AODV RREQ reserved: " + getReserved() + "<br>" +      "AODV RREQ hop_count: " + getHopCount() + "<br>" +      "AODV RREQ id: " + getID() + "<br>" +      "AODV RREQ dest_addr: " + getDestAddr() + "<br>" +      "AODV RREQ dest_seqno: " + getDestSeqNo() + "<br>" +      "AODV RREQ orig_addr: " + getOrigAddr() + "<br>" +      "AODV RREQ orig_seqno: " + getOrigSeqNo() +      "</html>";    }    public static boolean dataFits(byte[] packetData) {      if (packetData.length != SIZE) {        return false;      }      byte[] dataNoHeader = new byte[HEADER_SIZE];      System.arraycopy(packetData, packetData.length - HEADER_SIZE, dataNoHeader, 0, HEADER_SIZE);      if (dataNoHeader[0] != TYPE) {        return false;      }      return true;    }  };  static class PacketAODV_RREP extends LoggedPacket {    public final static int SIZE = 56;    public final static int HEADER_SIZE = 20;    public final static int TYPE = 2;    private byte[] data;    public PacketAODV_RREP(byte[] packetData) {      this.data = new byte[HEADER_SIZE];      System.arraycopy(packetData, packetData.length - HEADER_SIZE, data, 0, HEADER_SIZE);    }    public int getType() {      return data[0];    }    public int getFlags() {      return data[1];    }    public int getPrefix() {      return data[2];    }    public int getHopCount() {      return data[3];    }    public String getDestAddr() {      return (0xff&data[4]) + "." + (0xff&data[5]) + "." + (0xff&data[6]) + "." + (0xff&data[7]);    }    public int getDestSeqNo() {      int seqNo =        ((data[8] & 0xFF) << 24) +        ((data[9] & 0xFF) << 16) +        ((data[10] & 0xFF) << 8) +        ((data[11] & 0xFF) << 0);      return seqNo;    }    public String getOrigAddr() {      return (0xff&data[12]) + "." + (0xff&data[13]) + "." + (0xff&data[14]) + "." + (0xff&data[15]);    }    public int getLifetime() {      int seqNo =        ((data[16] & 0xFF) << 24) +        ((data[17] & 0xFF) << 16) +        ((data[18] & 0xFF) << 8) +        ((data[19] & 0xFF) << 0);      return seqNo;    }    public String getShortDescription() {      return "AODV RREP to " + getDestAddr() + " from " + getOrigAddr();    }    public String getToolTip() {      return "<html>" +      "AODV RREP type: " + getType() + "<br>" +      "AODV RREP flags: " + getFlags() + "<br>" +      "AODV RREP prefix: " + getPrefix() + "<br>" +      "AODV RREP hop_count: " + getHopCount() + "<br>" +      "AODV RREP dest_addr: " + getDestAddr() + "<br>" +      "AODV RREP dest_seqno: " + getDestSeqNo() + "<br>" +      "AODV RREP orig_addr: " + getOrigAddr() + "<br>" +      "AODV RREP lifetime: " + getLifetime() + "<br>" +      "</html>";    }    public static boolean dataFits(byte[] packetData) {      if (packetData.length != SIZE) {        return false;      }      byte[] dataNoHeader = new byte[HEADER_SIZE];      System.arraycopy(packetData, packetData.length - HEADER_SIZE, dataNoHeader, 0, HEADER_SIZE);      if (dataNoHeader[0] != TYPE) {        return false;      }      return true;    }  };  static class PacketAODV_RERR extends LoggedPacket {    public final static int SIZE = 40;    public final static int HEADER_SIZE = 12;    public final static int TYPE = 3;    private byte[] data;    public PacketAODV_RERR(byte[] packetData) {      this.data = new byte[HEADER_SIZE];      System.arraycopy(packetData, packetData.length - HEADER_SIZE, data, 0, HEADER_SIZE);    }    public int getType() {      return data[0];    }    public int getFlags() {      return data[1];    }    public int getReserved() {      return data[2];    }    public int getDestCount() {      return data[3];    }    public String getUnreachAddr() {      return (0xff&data[4]) + "." + (0xff&data[5]) + "." + (0xff&data[6]) + "." + (0xff&data[7]);    }    public int getUnreachSeqNo() {      int seqNo =        ((data[8] & 0xFF) << 24) +        ((data[9] & 0xFF) << 16) +        ((data[10] & 0xFF) << 8) +        ((data[11] & 0xFF) << 0);      return seqNo;    }    public String getShortDescription() {      return "AODV RERR for " + getUnreachAddr();    }    public String getToolTip() {      return "<html>" +      "AODV RERR type: " + getType() + "<br>" +      "AODV RERR flags: " + getFlags() + "<br>" +      "AODV RERR reserved: " + getReserved() + "<br>" +      "AODV RERR dest_count: " + getDestCount() + "<br>" +      "AODV RERR unreach_addr: " + getUnreachAddr() + "<br>" +      "AODV RERR unreach_seqno: " + getUnreachSeqNo() + "<br>" +      "</html>";    }    public static boolean dataFits(byte[] packetData) {      if (packetData.length != SIZE) {        return false;      }      byte[] dataNoHeader = new byte[HEADER_SIZE];      System.arraycopy(packetData, packetData.length - HEADER_SIZE, dataNoHeader, 0, HEADER_SIZE);      if (dataNoHeader[0] != TYPE) {        return false;      }      return true;    }  };  static class AckPacket extends LoggedPacket {    public final static int SIZE = 5;    private byte[] data;    public AckPacket(byte[] packetData) {      this.data = packetData;    }    public int getChecksum() {      int checksum =        ((data[3] & 0xFF) << 8) +        ((data[4] & 0xFF) << 0);      return checksum;    }    public String getShortDescription() {      return "ACK";    }    public String getToolTip() {      return "<html>" +      "ACK checksum: " + getChecksum() + "<br>" +      "</html>";    }    public static boolean dataFits(byte[] packetData) {      if (packetData.length != SIZE) {        return false;      }      if (packetData[0] != (byte) 'a') {        return false;      }      if (packetData[1] != (byte) 'C') {        return false;      }      if (packetData[2] != (byte) 'k') {        return false;      }      return true;    }  };  static class ForwardedPacketUnknown extends PacketUnknown {    public final static int MINIMUM_SIZE = 4;    public ForwardedPacketUnknown(byte[] data) {      super(data);    }    public String getShortDescription() {      return "(FWD) " + super.getShortDescription();    }    public static boolean dataFits(byte[] packetData) {      if (packetData.length < ForwardedPacketUnknown.MINIMUM_SIZE) {        return false;      }      if (packetData[0] != (byte) 'f') {        return false;      }      if (packetData[1] != (byte) 'W') {        return false;      }      if (packetData[2] != (byte) 'd') {        return false;      }      if (packetData[3] != (byte) ':') {        return false;      }      return true;    }  }  static class PacketUnknown extends LoggedPacket {    private byte[] data = null;    public PacketUnknown(byte[] data) {      this.data = data;    }    public String getShortDescription() {      return "Data packet, size " + data.length;    }    public String getToolTip() {      String toolTip = "<html><b>Data packet</b><br>";      int byteCounter = 0;      for (byte b: data) {        String hexB = "0" + Integer.toHexString(b);        hexB = hexB.substring(hexB.length() - 2);        toolTip += "0x" + hexB + " ";        if (byteCounter++ > 2) {          toolTip += "<br>";          byteCounter = 0;        }      }      toolTip += "<br><br>";      for (byte b: data) {        toolTip += (char) b;      }      toolTip += "</html>";      return toolTip;    }  }  private LoggedPacket analyzePacket(byte[] data) {    if (PacketAODV_RREQ.dataFits(data)) {      return new PacketAODV_RREQ(data);    }    if (PacketAODV_RREP.dataFits(data)) {      return new PacketAODV_RREP(data);    }    if (PacketAODV_RERR.dataFits(data)) {      return new PacketAODV_RERR(data);    }    if (ForwardedPacketUnknown.dataFits(data)) {      return new ForwardedPacketUnknown(data);    }    if (AckPacket.dataFits(data)) {      return new AckPacket(data);    }    return new PacketUnknown(data);  }  public void closePlugin() {    if (radioMediumObserver != null) {      radioMedium.deleteRadioMediumObserver(radioMediumObserver);    }  }  public Collection<Element> getConfigXML() {    return null;  }  public boolean setConfigXML(Collection<Element> configXML,      boolean visAvailable) {    return true;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -