Loading javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java +4 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ */ package org.etsi.its.adapter.layers; import java.util.HashMap; import java.util.Map; import java.util.Stack; Loading Loading @@ -121,6 +122,9 @@ public class BtpLayer extends Layer { byte[] payload = new byte[payloadLength]; System.arraycopy(message, 4, payload, 0, payloadLength); lowerInfo.put(BTP_DSTPORT, dstPort); lowerInfo.put(BTP_DSTPORTINFO, srcPort); super.receive(payload, lowerInfo); } } javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java +39 −4 Original line number Diff line number Diff line Loading @@ -80,6 +80,15 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { */ public static final String GN_ANGLE = "GnAngle"; /** * Parameter name for traffic class */ public static final String GN_TRAFFICCLASS = "GnTrafficClass"; /** * Parameter name for packet's lifetime */ public static final String GN_LIFETIME = "GnLifetime"; /** * GeoNetworking header type for unknown messages Loading Loading @@ -295,15 +304,20 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { public void receive(byte[] message, Map<String, Object> lowerInfo) { // System.out.println(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message)); byte[] basicHdr = new byte[4]; // TODO To be removed byte[] basicHdr = new byte[4]; System.arraycopy(message, 4, basicHdr, 0, 4); byte[] versionNh = new byte[1]; System.arraycopy(basicHdr, 0, versionNh, 0, 1); int nextHeader = (int)(versionNh[0] & (byte)0x0F); byte nextHeader = (byte)(versionNh[0] & (byte)0x0F); int lt_multiplier = (int)(basicHdr[2] & (byte)0xFC) >> 2; int lt_base = (int)(basicHdr[2] & (byte)0x03); int lifetime = computeGnLifeTime(lt_multiplier, lt_base); if (!management.isSecuredModeSet()) { // Secure mode disabled byte[] commonHdr = new byte[8]; System.arraycopy(message, 4, commonHdr, 0, 8); nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4); int trafficClass = (int)(commonHdr[2]); byte[] htHst = new byte[1]; System.arraycopy(commonHdr, 1, htHst, 0, 1); Loading Loading @@ -343,6 +357,10 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { byte[] payload = new byte[payloadLength]; System.arraycopy(message, message.length - payloadLength, payload, 0, payloadLength); lowerInfo.put(GN_NEXTHEADER, nextHeader); lowerInfo.put(GN_TYPE, headerType); lowerInfo.put(GN_SUBTYPE, headerSubType); lowerInfo.put(GN_LIFETIME, lifetime); lowerInfo.put(GN_TRAFFICCLASS, trafficClass); super.receive(payload, lowerInfo); } } Loading Loading @@ -395,6 +413,8 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { byte[] commonHdr = new byte[8]; System.arraycopy(message, offset, commonHdr, 0, 8); // System.out.println("GnLayer.receive: commonHdr: " + ByteHelper.byteArrayToString(commonHdr)); nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4); int trafficClass = (int)(commonHdr[2]); byte[] htHst = new byte[1]; System.arraycopy(commonHdr, 1, htHst, 0, 1); Loading Loading @@ -432,9 +452,11 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { if(payloadLength > 0) { byte[] payload = new byte[payloadLength]; System.arraycopy(message, message.length - payloadLength - 68, payload, 0, payloadLength); // System.out.println("GnLayer.receive: payload: " + ByteHelper.byteArrayToString(payload)); lowerInfo.put(GN_NEXTHEADER, nextHeader); // System.out.println("GnLayer.receive: call super.receive: " + ByteHelper.byteArrayToString(payload)); lowerInfo.put(GN_TYPE, headerType); lowerInfo.put(GN_SUBTYPE, headerSubType); lowerInfo.put(GN_LIFETIME, lifetime); lowerInfo.put(GN_TRAFFICCLASS, trafficClass); super.receive(payload, lowerInfo); } } Loading @@ -442,6 +464,19 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { } } // End of method receive /** * Computes GN lifetime value * @param lt_multiplier GN LT multiplier * @param lt_base GN LT base * @return GN lifetime value in ms */ private int computeGnLifeTime(int lt_multiplier, int lt_base) { final int[] base = {50, 1000, 10000, 100000}; return base[lt_base] * lt_multiplier; } /** * Builds encoded Basic Header * @return Encoded Basic Header Loading javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java +22 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; import org.etsi.common.ByteHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; Loading @@ -29,6 +31,25 @@ public class CamPort extends ProtocolPort { super(portName, componentName, lowerStackDesc, linkLayerAddress); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) */ @Override public void receive(byte[] message, Map<String, Object> lowerInfo) { // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, (byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER), (byte[])lowerInfo.get(GnLayer.GN_TYPE), (byte[])lowerInfo.get(GnLayer.GN_SUBTYPE), (byte[])lowerInfo.get(GnLayer.GN_LIFETIME), (byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)); super.receive(msgInd, lowerInfo); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.IPort#send(byte[]) */ Loading javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java +21 −0 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; import org.etsi.common.ByteHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; Loading @@ -29,6 +31,25 @@ public class DenmPort extends ProtocolPort { super(portName, componentName, lowerStackDesc, linkLayerAddress); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) */ @Override public void receive(byte[] message, Map<String, Object> lowerInfo) { // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, (byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER), (byte[])lowerInfo.get(GnLayer.GN_TYPE), (byte[])lowerInfo.get(GnLayer.GN_SUBTYPE), (byte[])lowerInfo.get(GnLayer.GN_LIFETIME), (byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)); super.receive(msgInd, lowerInfo); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.IPort#send(byte[]) */ Loading javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class CodecFactory { org.etsi.ttcn.codec.its.geonetworking.Plugin.init(); org.etsi.ttcn.codec.its.btp.Plugin.init(); org.etsi.ttcn.codec.its.security.Plugin.init(); org.etsi.ttcn.codec.its.facilities.Plugin.init(); } } Loading Loading
javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java +4 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ */ package org.etsi.its.adapter.layers; import java.util.HashMap; import java.util.Map; import java.util.Stack; Loading Loading @@ -121,6 +122,9 @@ public class BtpLayer extends Layer { byte[] payload = new byte[payloadLength]; System.arraycopy(message, 4, payload, 0, payloadLength); lowerInfo.put(BTP_DSTPORT, dstPort); lowerInfo.put(BTP_DSTPORTINFO, srcPort); super.receive(payload, lowerInfo); } }
javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java +39 −4 Original line number Diff line number Diff line Loading @@ -80,6 +80,15 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { */ public static final String GN_ANGLE = "GnAngle"; /** * Parameter name for traffic class */ public static final String GN_TRAFFICCLASS = "GnTrafficClass"; /** * Parameter name for packet's lifetime */ public static final String GN_LIFETIME = "GnLifetime"; /** * GeoNetworking header type for unknown messages Loading Loading @@ -295,15 +304,20 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { public void receive(byte[] message, Map<String, Object> lowerInfo) { // System.out.println(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message)); byte[] basicHdr = new byte[4]; // TODO To be removed byte[] basicHdr = new byte[4]; System.arraycopy(message, 4, basicHdr, 0, 4); byte[] versionNh = new byte[1]; System.arraycopy(basicHdr, 0, versionNh, 0, 1); int nextHeader = (int)(versionNh[0] & (byte)0x0F); byte nextHeader = (byte)(versionNh[0] & (byte)0x0F); int lt_multiplier = (int)(basicHdr[2] & (byte)0xFC) >> 2; int lt_base = (int)(basicHdr[2] & (byte)0x03); int lifetime = computeGnLifeTime(lt_multiplier, lt_base); if (!management.isSecuredModeSet()) { // Secure mode disabled byte[] commonHdr = new byte[8]; System.arraycopy(message, 4, commonHdr, 0, 8); nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4); int trafficClass = (int)(commonHdr[2]); byte[] htHst = new byte[1]; System.arraycopy(commonHdr, 1, htHst, 0, 1); Loading Loading @@ -343,6 +357,10 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { byte[] payload = new byte[payloadLength]; System.arraycopy(message, message.length - payloadLength, payload, 0, payloadLength); lowerInfo.put(GN_NEXTHEADER, nextHeader); lowerInfo.put(GN_TYPE, headerType); lowerInfo.put(GN_SUBTYPE, headerSubType); lowerInfo.put(GN_LIFETIME, lifetime); lowerInfo.put(GN_TRAFFICCLASS, trafficClass); super.receive(payload, lowerInfo); } } Loading Loading @@ -395,6 +413,8 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { byte[] commonHdr = new byte[8]; System.arraycopy(message, offset, commonHdr, 0, 8); // System.out.println("GnLayer.receive: commonHdr: " + ByteHelper.byteArrayToString(commonHdr)); nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4); int trafficClass = (int)(commonHdr[2]); byte[] htHst = new byte[1]; System.arraycopy(commonHdr, 1, htHst, 0, 1); Loading Loading @@ -432,9 +452,11 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { if(payloadLength > 0) { byte[] payload = new byte[payloadLength]; System.arraycopy(message, message.length - payloadLength - 68, payload, 0, payloadLength); // System.out.println("GnLayer.receive: payload: " + ByteHelper.byteArrayToString(payload)); lowerInfo.put(GN_NEXTHEADER, nextHeader); // System.out.println("GnLayer.receive: call super.receive: " + ByteHelper.byteArrayToString(payload)); lowerInfo.put(GN_TYPE, headerType); lowerInfo.put(GN_SUBTYPE, headerSubType); lowerInfo.put(GN_LIFETIME, lifetime); lowerInfo.put(GN_TRAFFICCLASS, trafficClass); super.receive(payload, lowerInfo); } } Loading @@ -442,6 +464,19 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { } } // End of method receive /** * Computes GN lifetime value * @param lt_multiplier GN LT multiplier * @param lt_base GN LT base * @return GN lifetime value in ms */ private int computeGnLifeTime(int lt_multiplier, int lt_base) { final int[] base = {50, 1000, 10000, 100000}; return base[lt_base] * lt_multiplier; } /** * Builds encoded Basic Header * @return Encoded Basic Header Loading
javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java +22 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; import org.etsi.common.ByteHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; Loading @@ -29,6 +31,25 @@ public class CamPort extends ProtocolPort { super(portName, componentName, lowerStackDesc, linkLayerAddress); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) */ @Override public void receive(byte[] message, Map<String, Object> lowerInfo) { // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, (byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER), (byte[])lowerInfo.get(GnLayer.GN_TYPE), (byte[])lowerInfo.get(GnLayer.GN_SUBTYPE), (byte[])lowerInfo.get(GnLayer.GN_LIFETIME), (byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)); super.receive(msgInd, lowerInfo); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.IPort#send(byte[]) */ Loading
javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java +21 −0 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; import org.etsi.common.ByteHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; Loading @@ -29,6 +31,25 @@ public class DenmPort extends ProtocolPort { super(portName, componentName, lowerStackDesc, linkLayerAddress); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) */ @Override public void receive(byte[] message, Map<String, Object> lowerInfo) { // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, (byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER), (byte[])lowerInfo.get(GnLayer.GN_TYPE), (byte[])lowerInfo.get(GnLayer.GN_SUBTYPE), (byte[])lowerInfo.get(GnLayer.GN_LIFETIME), (byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)); super.receive(msgInd, lowerInfo); } /* (non-Javadoc) * @see org.etsi.its.adapter.ports.IPort#send(byte[]) */ Loading
javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class CodecFactory { org.etsi.ttcn.codec.its.geonetworking.Plugin.init(); org.etsi.ttcn.codec.its.btp.Plugin.init(); org.etsi.ttcn.codec.its.security.Plugin.init(); org.etsi.ttcn.codec.its.facilities.Plugin.init(); } } Loading