diff --git a/taconfig.xml b/taconfig.xml
index 8b8f1e34baf71a79a1a55f992c3c1754cdf96f45..a5e394c249641fa6cf9b9dad7f42a6f55aac28ad 100644
--- a/taconfig.xml
+++ b/taconfig.xml
@@ -38,9 +38,9 @@
-
-
-
+
+
+
@@ -61,6 +61,9 @@
+
+
+
diff --git a/tct3_javasrc_patch.patch b/tct3_javasrc_patch.patch
index 3cee697b4404f37302e7b6c72b7abc13a107f152..c8e5a26ebae0e97a5484b513cb96ef89bf6ae894 100644
--- a/tct3_javasrc_patch.patch
+++ b/tct3_javasrc_patch.patch
@@ -1,6 +1,18 @@
+Index: adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java
+===================================================================
+--- adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java (revision 1471)
++++ adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java (working copy)
+@@ -37,7 +37,6 @@
+ ports.put("btpPort", BtpPort.class);
+ ports.put("geoNetworkingPort", GnPort.class);
+ ports.put("ipv6OverGeoNetworkingPort", Gn6Port.class);
+- ports.put("v2gPort", V2GPort.class);
+ }
+
+ /**
Index: adapter/org/etsi/its/adapter/ports/V2GPort.java
===================================================================
---- adapter/org/etsi/its/adapter/ports/V2GPort.java (revision 653)
+--- adapter/org/etsi/its/adapter/ports/V2GPort.java (revision 1471)
+++ adapter/org/etsi/its/adapter/ports/V2GPort.java (working copy)
@@ -75,7 +75,7 @@
role = ((CharstringValue)TERFactory.getInstance().getTaParameter("V2gTsRole")).getString();
@@ -13,7 +25,7 @@ Index: adapter/org/etsi/its/adapter/ports/V2GPort.java
} catch (UnknownHostException e1) {
Index: adapter/org/etsi/its/adapter/TestAdapter.java
===================================================================
---- adapter/org/etsi/its/adapter/TestAdapter.java (revision 653)
+--- adapter/org/etsi/its/adapter/TestAdapter.java (revision 1471)
+++ adapter/org/etsi/its/adapter/TestAdapter.java (working copy)
@@ -19,7 +19,6 @@
import org.etsi.its.adapter.ports.ProtocolPortFactory;
@@ -23,30 +35,27 @@ Index: adapter/org/etsi/its/adapter/TestAdapter.java
import org.etsi.ttcn.tri.TriAddress;
import org.etsi.ttcn.tri.TriAddressList;
import org.etsi.ttcn.tri.TriCommunicationSA;
-@@ -71,14 +70,13 @@
+@@ -70,10 +69,14 @@
+ return required.getTriStatus(TriStatus.TRI_OK);
}
++ @Override
++ public TriStatus triExecuteTestCase(TriTestCaseId tcId, TriPortIdList portList) {
++ return triExecuteTestcase(tcId, portList);
++ }
++
/* (non-Javadoc)
-- * @see org.etsi.ttcn.tri.TriCommunicationSA#triExecuteTestcase(org.etsi.ttcn.tri.TriTestCaseId, org.etsi.ttcn.tri.TriPortIdList)
-- */
+ * @see org.etsi.ttcn.tri.TriCommunicationSA#triExecuteTestcase(org.etsi.ttcn.tri.TriTestCaseId, org.etsi.ttcn.tri.TriPortIdList)
+ */
- @Override
-+ * @see org.etsi.ttcn.tri.TriCommunicationSA#triExecuteTestcase(org.etsi.ttcn.tri.TriTestCaseId, org.etsi.ttcn.tri.TriPortIdList)
-+ */
public TriStatus triExecuteTestcase(final TriTestCaseId tcId, final TriPortIdList portList) {
-- return required.getTriStatus(TriStatus.TRI_OK);
-- }
-+ return required.getTriStatus(TriStatus.TRI_OK);
-+ }
-
-- /* (non-Javadoc)
-+ /* (non-Javadoc)
- * @see org.etsi.ttcn.tri.TriCommunicationSA#triMap(org.etsi.ttcn.tri.TriPortId, org.etsi.ttcn.tri.TriPortId)
- */
- @Override
-@@ -297,15 +295,6 @@
+ return required.getTriStatus(TriStatus.TRI_OK);
+ }
+@@ -296,14 +299,14 @@
+ return required.getTriStatus(TriStatus.TRI_ERROR, "triSutActionInformal not implemented");
}
- /**
+- /**
- * triSutActionTemplate not implemented
- * @see org.etsi.ttcn.tri.TriCommunicationSA#triSutActionTemplate(org.etsi.ttcn.tri.TriActionTemplate)
- */
@@ -54,40 +63,124 @@ Index: adapter/org/etsi/its/adapter/TestAdapter.java
- public TriStatus triSutActionTemplate(TriActionTemplate templateValue) {
- return required.getTriStatus(TriStatus.TRI_ERROR, "triSutActionTemplate not implemented");
- }
--
-- /**
++// /**
++// * triSutActionTemplate not implemented
++// * @see org.etsi.ttcn.tri.TriCommunicationSA#triSutActionTemplate(org.etsi.ttcn.tri.TriActionTemplate)
++// */
++// @Override
++// public TriStatus triSutActionTemplate(TriActionTemplate templateValue) {
++// return required.getTriStatus(TriStatus.TRI_ERROR, "triSutActionTemplate not implemented");
++// }
+
+ /**
* triMapParam not implemented
- * @see org.etsi.ttcn.tri.TriCommunicationSA#triMapParam(org.etsi.ttcn.tri.TriPortId, org.etsi.ttcn.tri.TriPortId, org.etsi.ttcn.tri.TriParameterList)
- */
-@@ -322,4 +311,14 @@
+@@ -322,4 +325,21 @@
public TriStatus triUnmapParam(TriPortId compPortId, TriPortId tsiPortId, TriParameterList paramList) {
return required.getTriStatus(TriStatus.TRI_ERROR, "triUnmapParam not implemented");
}
+
+ @Override
-+ public TriStatus triExecuteTestCase(TriTestCaseId tcId, TriPortIdList portList) {
-+ return this.triExecuteTestcase(tcId, portList);
++ public TriStatus triGetStreamValue(TriComponentId arg0, TriPortId arg1,
++ TriAddress arg2, TriMessage arg3) {
++ return required.getTriStatus(TriStatus.TRI_ERROR, "triUnmapParam not implemented");
++ }
++
++ @Override
++ public TriStatus triSetStreamValue(TriComponentId arg0, TriPortId arg1,
++ TriAddress arg2, TriMessage arg3) {
++ return required.getTriStatus(TriStatus.TRI_ERROR, "triUnmapParam not implemented");
+ }
+
+ @Override
+ public TriStatus triStaticMap(TriPortId arg0, TriPortId arg1) {
-+ return required.getTriStatus(TriStatus.TRI_ERROR, "triMapParam not implemented");
++ return required.getTriStatus(TriStatus.TRI_ERROR, "triUnmapParam not implemented");
+ }
}
+Index: codec/org/etsi/codec/ITciCDWrapper.java
+===================================================================
+--- codec/org/etsi/codec/ITciCDWrapper.java (revision 1471)
++++ codec/org/etsi/codec/ITciCDWrapper.java (working copy)
+@@ -27,9 +27,33 @@
+ * See ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
+ * @return An instance of Type representing a TTCN-3 integer type
+ */
+- public IntegerValue getInteger();
++ public IntegerValue setInteger(final Integer value);
+
+ /**
++ * Constructs and returns a basic TTCN-3 big integer type
++ *
++ * @see ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
++ * @return An instance of Type representing a TTCN-3 integer type
++ */
++ public IntegerValue setInteger(final BigInteger value);
++
++ /**
++ * Constructs and returns a basic integer type
++ *
++ * See ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
++ * @return An instance of Type representing a TTCN-3 integer type
++ */
++ public int getInteger(final IntegerValue iv);
++
++ /**
++ * Constructs and returns a basic big integer type
++ *
++ * @see ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
++ * @return An instance of Type representing a TTCN-3 integer type
++ */
++ public long/*TODO BigInteger*/ getBigInteger(final IntegerValue iv);
++
++ /**
+ * Constructs and returns a basic TTCN-3 octet string type
+ *
+ * See ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getOctetstring
+@@ -44,14 +68,6 @@
+ * @return An instance of Type representing a TTCN-3 float type
+ */
+ public FloatValue getFloat();
+-
+- /**
+- * Constructs and returns a basic TTCN-3 big integer type
+- *
+- * @see ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
+- * @return An instance of Type representing a TTCN-3 integer type
+- */
+- IntegerValue getBigInteger(BigInteger bigInt);
+
+ /**
+ * Constructs and returns a basic TTCN-3 float type
+Index: codec/org/etsi/ttcn/codec/CodecFactory.java
+===================================================================
+--- codec/org/etsi/ttcn/codec/CodecFactory.java (revision 1471)
++++ codec/org/etsi/ttcn/codec/CodecFactory.java (working copy)
+@@ -61,7 +61,7 @@
+ org.etsi.ttcn.codec.its.uppertester.Plugin.init();
+ org.etsi.ttcn.codec.its.geonetworking.Plugin.init();
+ org.etsi.ttcn.codec.its.btp.Plugin.init();
+-
++ org.etsi.ttcn.codec.its.security.Plugin.init();
+ }
+ }
+
Index: codec/org/etsi/ttcn/codec/generic/Integer.java
===================================================================
---- codec/org/etsi/ttcn/codec/generic/Integer.java (revision 653)
+--- codec/org/etsi/ttcn/codec/generic/Integer.java (revision 1471)
+++ codec/org/etsi/ttcn/codec/generic/Integer.java (working copy)
-@@ -48,15 +48,15 @@
+@@ -46,17 +46,17 @@
+ try {
+ Matcher matcher = UNSIGNED_VARIANT.matcher(decodingHypothesis.getTypeEncodingVariant());
if(matcher.find()) {
- // Unsigned integer
- if(lengthInBits >= 32) {
+- // Unsigned integer
+- if(lengthInBits >= 32) {
- iv.setBigInt(new BigInteger(1, value)); // /!\ ttwb specific
-+ iv.setInteger(java.lang.Integer.MAX_VALUE); //!\ testcastT3 does not support big integer
++ // Unsigned integer
++ if(lengthInBits >= java.lang.Integer.SIZE) {
++ iv = mainCodec.getTciCDRequired().setInteger(new BigInteger(1, value));
}
else {
- iv.setInt(ByteHelper.byteArrayToInt(value));
-+ iv.setInteger(ByteHelper.byteArrayToInt(value));
++ iv = mainCodec.getTciCDRequired().setInteger(ByteHelper.byteArrayToInt(value));
}
}
else {
@@ -97,31 +190,22 @@ Index: codec/org/etsi/ttcn/codec/generic/Integer.java
}
}
catch(Exception e) {
-@@ -85,7 +85,7 @@
- }
- lengthInBytes = lengthInBits / 8 + (((lengthInBits % 8) > 0)?1:0);
+@@ -87,10 +87,10 @@
-- encoded = ByteHelper.intToByteArray(iv.getInt(), lengthInBytes);
-+ encoded = ByteHelper.intToByteArray(iv.getInteger(), lengthInBytes);
- res.setBits(encoded, lengthInBits);
-
- return res;
-Index: codec/org/etsi/ttcn/codec/ICodec.java
-===================================================================
---- codec/org/etsi/ttcn/codec/ICodec.java (revision 653)
-+++ codec/org/etsi/ttcn/codec/ICodec.java (working copy)
-@@ -35,6 +35,8 @@
+ // System.out.println(String.format("Integer.encode: length: %d", lengthInBytes));
+ if (lengthInBits > java.lang.Integer.SIZE) {
+- encoded = ByteHelper.longToByteArray(iv.getBigInt().longValue(), lengthInBytes);
++ encoded = ByteHelper.longToByteArray(mainCodec.getTciCDRequired().getBigInteger(iv), lengthInBytes);
+ res.setBits(encoded, lengthInBits);
+ } else {
+- encoded = ByteHelper.intToByteArray(iv.getInt(), lengthInBytes);
++ encoded = ByteHelper.intToByteArray(mainCodec.getTciCDRequired().getInteger(iv), lengthInBytes);
+ res.setBits(encoded, lengthInBits);
}
- catch(Exception e) {
- // Empty on purpose
-+ System.err.println(e.getMessage());
-+ return -1;
- }
- return 0;
- }
+ res.setBits(encoded, lengthInBits);
Index: codec/org/etsi/ttcn/codec/ipv6/Ipv6ExtHdr.java
===================================================================
---- codec/org/etsi/ttcn/codec/ipv6/Ipv6ExtHdr.java (revision 653)
+--- codec/org/etsi/ttcn/codec/ipv6/Ipv6ExtHdr.java (revision 1471)
+++ codec/org/etsi/ttcn/codec/ipv6/Ipv6ExtHdr.java (working copy)
@@ -27,7 +27,7 @@
protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
@@ -134,7 +218,7 @@ Index: codec/org/etsi/ttcn/codec/ipv6/Ipv6ExtHdr.java
}
Index: codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java
===================================================================
---- codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java (revision 653)
+--- codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java (revision 1471)
+++ codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java (working copy)
@@ -39,7 +39,7 @@
}
@@ -145,9 +229,23 @@ Index: codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java
mainCodec.setHint("payloadLength", Integer.toString(pl));
}
}
+Index: codec/org/etsi/ttcn/codec/its/security/Plugin.java
+===================================================================
+--- codec/org/etsi/ttcn/codec/its/security/Plugin.java (revision 1471)
++++ codec/org/etsi/ttcn/codec/its/security/Plugin.java (working copy)
+@@ -13,7 +13,6 @@
+ public static void init() {
+
+ CodecFactory cf = CodecFactory.getInstance();
+-// cf.setCodec(TciTypeClass.UNION, "LibItsSecurity", "LibItsSecurity", BtpHeader.class);
+-// cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "LibItsSecurity", Payload.class);
++ cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "Payload", Payload.class);
+ }
+ }
+\ No newline at end of file
Index: codec/org/etsi/ttcn/codec/lowpan/IphcHeader.java
===================================================================
---- codec/org/etsi/ttcn/codec/lowpan/IphcHeader.java (revision 653)
+--- codec/org/etsi/ttcn/codec/lowpan/IphcHeader.java (revision 1471)
+++ codec/org/etsi/ttcn/codec/lowpan/IphcHeader.java (working copy)
@@ -126,7 +126,7 @@
}
@@ -158,30 +256,71 @@ Index: codec/org/etsi/ttcn/codec/lowpan/IphcHeader.java
mainCodec.setHint("Ipv6NextHeader", Integer.toString(nh));
if(nh == 0 || nh == 60 || nh == 43 || nh == 44) {
mainCodec.setHint("ExtensionHeaderListMore", "true");
+Index: codec/org/etsi/ttcn/codec/MainCodec.java
+===================================================================
+--- codec/org/etsi/ttcn/codec/MainCodec.java (revision 1471)
++++ codec/org/etsi/ttcn/codec/MainCodec.java (working copy)
+@@ -8,6 +8,7 @@
+ import java.util.Map;
+ import java.util.TreeMap;
+
++import org.etsi.codec.ITciCDWrapper;
+ import org.etsi.ttcn.tri.TriMessage;
+ import org.etsi.ttcn.tci.TciCDProvided;
+ import org.etsi.ttcn.tci.TciCDRequired;
+@@ -16,9 +17,9 @@
+
+ public class MainCodec extends ICodec {
+
+- public MainCodec(TciCDRequired cdReq) {
++ public MainCodec(ITciCDWrapper _cdReq) {
+ super(null);
+- this.cdReq = cdReq;
++ this.cdReq = _cdReq;
+ }
+
+ public Value triDecode(TriMessage message, Type decodingHypothesis) {
+@@ -97,11 +98,11 @@
+ presenceHints.put(key, value);
+ }
+
+- public TciCDRequired getTciCDRequired() {
++ public ITciCDWrapper getTciCDRequired() {
+ return cdReq;
+ }
+
+ protected Map hints = new TreeMap();
+ protected Map presenceHints = new TreeMap();
+- protected TciCDRequired cdReq;
++ protected ITciCDWrapper cdReq;
+ }
Index: extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
===================================================================
---- extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java (revision 653)
+--- extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java (revision 1471)
+++ extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java (working copy)
-@@ -7,7 +7,6 @@
-
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
--import java.math.BigInteger;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import java.text.DateFormat;
-@@ -81,15 +80,15 @@
+@@ -79,24 +79,19 @@
+
+ String datestr="01/01/2004 00:00:00";
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
- IntegerValue now = _tcicdWrapper.getInteger();
+- IntegerValue now = _tcicdWrapper.getInteger();
++ IntegerValue now = null;
try {
-- now.setInt(
-+ now.setInteger(
- (int)
- (System.currentTimeMillis() - ((java.util.Date)formatter.parse(datestr)).getTime())
+-// System.out.println(String.format("fx_getCurrentTime: now:%d, 2004:%d", System.currentTimeMillis(), ((java.util.Date)formatter.parse(datestr)).getTime()));
+-// System.out.println("Diff: " + (int)(System.currentTimeMillis() - ((java.util.Date)formatter.parse(datestr)).getTime()));
+- now.setBigInt(
++ now = _tcicdWrapper.setInteger(
+ new BigInteger(
+ 1,
+- ByteHelper.longToByteArray(
+- System.currentTimeMillis() - ((java.util.Date)formatter.parse(datestr)).getTime(),
+- Long.SIZE / Byte.SIZE
+- )
++ ByteHelper.longToByteArray(System.currentTimeMillis() - ((java.util.Date)formatter.parse(datestr)).getTime(), Long.SIZE / Byte.SIZE)
+ )
);
} catch (ParseException e) {
- now.setInt(0);
-+ now.setInteger(0);
++ now = _tcicdWrapper.setInteger(0);
}
- _logger.exiting("ItsExternalFunctionsProvider", "fx_getCurrentTime", String.format("%10d", now.getInt()));
@@ -189,7 +328,7 @@ Index: extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
return now;
} // End of method fx_getCurrentTime
-@@ -115,17 +114,17 @@
+@@ -122,17 +117,17 @@
final IntegerValue p_latitudeA, final IntegerValue p_longitudeA,
final IntegerValue p_latitudeB, final IntegerValue p_longitudeB) {
_logger.entering("ItsExternalFunctionsProvider", "fx_computeDistance",
@@ -214,7 +353,7 @@ Index: extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
long d = Math.round(Math.sqrt(Math.pow(dlat * rbis, 2)
+ Math.pow(dlong * rbis * Math.cos(dlat), 2)));
-@@ -165,17 +164,17 @@
+@@ -172,17 +167,17 @@
_logger.entering(
"ItsExternalFunctionsProvider",
"fx_computePositionUsingDistance",
@@ -238,7 +377,7 @@ Index: extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
* Math.PI / 180;
double lat2 = Math.asin(Math.sin(lat1) * Math.cos(angularD)
-@@ -193,8 +192,8 @@
+@@ -200,8 +195,8 @@
long rlat2 = Math.round(lat2 * 10000000 / Math.PI * 180);
long rlong2 = Math.round(long2 * 10000000 / Math.PI * 180);
@@ -249,19 +388,26 @@ Index: extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
} // End of method fx_computePositionUsingDistance
-@@ -221,9 +220,8 @@
+@@ -226,11 +221,14 @@
+ */
+ @Override
public IntegerValue fx_computeGnTimestamp() {
-
- IntegerValue timestamp = _tcicdWrapper.getInteger();
--
+-
+- IntegerValue timestamp = _tcicdWrapper.getInteger();
+
- // /!\ ttwb specific
- timestamp.setBigInt(new BigInteger(1, ByteHelper.longToByteArray(((System.currentTimeMillis() - ITS_REF_TIME) % (long)Math.pow(2,32)), 5)));
-+ timestamp.setInteger((int)((System.currentTimeMillis() - ITS_REF_TIME) % (long)Math.pow(2,32)));
-+
++ IntegerValue timestamp = _tcicdWrapper.setInteger(
++ new BigInteger(
++ 1,
++ ByteHelper.longToByteArray((System.currentTimeMillis() - ITS_REF_TIME) % (long)Math.pow(2,32), Long.SIZE / Byte.SIZE)
++ )
++ );
++
return timestamp;
}
-@@ -298,11 +296,11 @@
+@@ -305,11 +303,11 @@
try {
// Upper-Layer Packet Length (32bits)
pseudoheader.write(ByteHelper.intToByteArray(