Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ITS - Intelligent Transport Systems
ITS
Commits
6ec3bb99
Commit
6ec3bb99
authored
Sep 09, 2016
by
garciay
Browse files
Add external function to compute TimeMark
parent
dcd8c821
Changes
6
Hide whitespace changes
Inline
Side-by-side
javasrc/extfunc/org/etsi/its/extfunc/IItsExternalFunctionsProvider.java
View file @
6ec3bb99
...
...
@@ -28,6 +28,15 @@ public interface IItsExternalFunctionsProvider {
*/
public
IntegerValue
fx_getCurrentTime
();
/**
* This external function gets the current time
* @return The current time in tenths of a second in the current or next hour in units of 1/10th second from UTC time
*
* TTCN-3 signature:
* external function fx_getCurrentTimeMark() return TimeMark;
*/
public
IntegerValue
fx_getCurrentTimeMark
();
/**
* This external function gets the current time
* @param p_latitudeA Latitude of node A
...
...
javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
View file @
6ec3bb99
...
...
@@ -13,6 +13,8 @@ import java.net.UnknownHostException;
import
java.text.DateFormat
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.ZoneOffset
;
import
java.time.ZonedDateTime
;
import
java.util.ArrayList
;
import
java.util.logging.Logger
;
...
...
@@ -134,6 +136,18 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
return
now
;
}
// End of method fx_getCurrentTime
@Override
public
IntegerValue
fx_getCurrentTimeMark
()
{
IntegerValue
now
=
null
;
//_logger.entering("ItsExternalFunctionsProvider", "fx_getCurrentTimeMark");
ZonedDateTime
t
=
ZonedDateTime
.
now
(
ZoneOffset
.
UTC
);
now
=
_tcicdWrapper
.
setInteger
(
new
Integer
((
t
.
getMinute
()
*
60
+
t
.
getSecond
())
*
10
));
//_logger.exiting("ItsExternalFunctionsProvider", "fx_getCurrentTimeMark", String.format("%4d", _tcicdWrapper.getBigInteger(now)));
return
now
;
}
/**
* This external function gets the current time
*
...
...
@@ -214,8 +228,8 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
// String.format("%d, %d", p_distance.getInteger(),
// p_orientation.getInteger()));
FloatValue
v_distance
=
_tcicdWrapper
.
getFloat
();
v_distance
.
setFloat
(
p_distance
.
getFloat
());
FloatValue
v_distance
=
_tcicdWrapper
.
getFloat
();
v_distance
.
setFloat
(
p_distance
.
getFloat
());
double
angularD
=
new
Double
(
v_distance
.
getFloat
())
/
earthRadius
;
double
radHeading
=
new
Double
(
_tcicdWrapper
.
getInteger
(
p_orientation
))
*
Math
.
PI
/
180
;
...
...
@@ -793,25 +807,25 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
result
.
setBoolean
(
b
);
if
(
b
){
byte
[]
value
=
certificate
.
toByteArray
();
p_certificate
.
setLength
(
value
.
length
);
if
(
value
.
length
!=
0
)
{
for
(
int
i
=
0
;
i
<
value
.
length
;
i
++)
{
p_certificate
.
setOctet
(
i
,
value
[
i
]);
}
// End 'for' statement
}
byte
[]
value
=
certificate
.
toByteArray
();
p_certificate
.
setLength
(
value
.
length
);
if
(
value
.
length
!=
0
)
{
for
(
int
i
=
0
;
i
<
value
.
length
;
i
++)
{
p_certificate
.
setOctet
(
i
,
value
[
i
]);
}
// End 'for' statement
}
}
else
{
p_certificate
.
setLength
(
0
);
p_certificate
.
setLength
(
0
);
}
return
result
;
}
private
static
final
byte
[]
ZERO32
=
new
byte
[]
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
...
...
@@ -829,19 +843,19 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
boolean
b
=
_certCache
.
readCertificateDigest
(
p_certificateId
.
getString
(),
digest
);
result
.
setBoolean
(
b
);
p_digest
.
setLength
(
8
);
byte
[]
value
;
p_digest
.
setLength
(
8
);
byte
[]
value
;
if
(
b
){
value
=
digest
.
toByteArray
();
if
(
value
.
length
!=
8
)
{
value
=
ZERO32
;
}
value
=
digest
.
toByteArray
();
if
(
value
.
length
!=
8
)
{
value
=
ZERO32
;
}
}
else
{
value
=
ZERO32
;
}
for
(
int
i
=
0
;
i
<
8
;
i
++)
{
p_digest
.
setOctet
(
i
,
value
[
i
]);
}
// End 'for' statement
value
=
ZERO32
;
}
for
(
int
i
=
0
;
i
<
8
;
i
++)
{
p_digest
.
setOctet
(
i
,
value
[
i
]);
}
// End 'for' statement
return
result
;
}
...
...
@@ -860,20 +874,20 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
boolean
b
=
_certCache
.
readSigningKey
(
p_keysId
.
getString
(),
key
);
result
.
setBoolean
(
b
);
p_key
.
setLength
(
32
);
p_key
.
setLength
(
32
);
byte
[]
value
;
if
(
b
){
byte
[]
value
;
if
(
b
){
value
=
key
.
toByteArray
();
if
(
value
.
length
!=
32
)
{
value
=
ZERO32
;
}
if
(
value
.
length
!=
32
)
{
value
=
ZERO32
;
}
}
else
{
value
=
ZERO32
;
value
=
ZERO32
;
}
for
(
int
i
=
0
;
i
<
32
;
i
++)
{
p_key
.
setOctet
(
i
,
value
[
i
]);
}
p_key
.
setOctet
(
i
,
value
[
i
]);
}
return
result
;
}
...
...
@@ -892,20 +906,20 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid
boolean
b
=
_certCache
.
readEncryptingKey
(
p_keysId
.
getString
(),
key
);
result
.
setBoolean
(
b
);
p_key
.
setLength
(
32
);
p_key
.
setLength
(
32
);
byte
[]
value
;
if
(
b
){
byte
[]
value
;
if
(
b
){
value
=
key
.
toByteArray
();
if
(
value
.
length
!=
32
)
{
value
=
ZERO32
;
}
if
(
value
.
length
!=
32
)
{
value
=
ZERO32
;
}
}
else
{
value
=
ZERO32
;
value
=
ZERO32
;
}
for
(
int
i
=
0
;
i
<
32
;
i
++)
{
p_key
.
setOctet
(
i
,
value
[
i
]);
}
p_key
.
setOctet
(
i
,
value
[
i
]);
}
return
result
;
}
...
...
javasrc/tool/org/etsi/its/tool/elvior/LibItsContainer_asn1.java
View file @
6ec3bb99
...
...
@@ -21,7 +21,7 @@ public class LibItsContainer_asn1 extends LibIts_asn1 {
_encodingName
=
"ITS_Container"
;
}
@Override
@Override
public
Value
decode
(
final
TriMessage
message
,
final
Type
decodingHypothesis
)
{
_logger
.
entering
(
"LibItsContainer_asn1"
,
"decode"
,
decodingHypothesis
.
getName
());
...
...
@@ -32,6 +32,10 @@ public class LibItsContainer_asn1 extends LibIts_asn1 {
TriMessage
msg
=
TriProvider
.
getInstance
().
getTriFactory
().
createMessage
();
msg
.
setEncodedMessage
(
ByteHelper
.
longToByteArray
(
lval
,
6
));
value
=
super
.
decode
(
msg
,
decodingHypothesis
);
}
else
if
(
decodingHypothesis
.
getName
().
equals
(
"TimeMark"
))
{
TriMessage
msg1
=
TriProvider
.
getInstance
().
getTriFactory
().
createMessage
();
msg1
.
setEncodedMessage
(
message
.
getEncodedMessage
());
value
=
super
.
decode
(
msg1
,
decodingHypothesis
);
}
else
{
value
=
super
.
decode
(
message
,
decodingHypothesis
);
}
...
...
javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java
View file @
6ec3bb99
...
...
@@ -248,7 +248,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT
}
public
TriStatus
triExternalFunction
(
TriFunctionId
functionId
,
TriParameterList
parameterList
,
TriParameter
returnValue
)
{
_logger
.
entering
(
"
PluginAdapter
"
,
"
triExternalFunction
"
,
functionId
.
getFunctionName
());
// + " - " + parameterList + " - " + returnValue.getParameterName() + " - " + returnValue.getParameterPassingMode());
//TERFactory.getInstance().logDebug(">>>
PluginAdapter
.
triExternalFunction
: " +
functionId.getFunctionName()); // + " - " + parameterList + " - " + returnValue.getParameterName() + " - " + returnValue.getParameterPassingMode());
TriStatus
result
=
m_triOK
;
if
(
...
...
@@ -275,6 +275,9 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT
}
else
if
(
functionId
.
getFunctionName
().
endsWith
(
"fx_getCurrentTime"
))
{
// Gets the current time
exec_getCurrentTime
(
returnValue
);
}
else
if
(
functionId
.
getFunctionName
().
endsWith
(
"fx_getCurrentTimeMark"
))
{
// Gets the current time
exec_getCurrentTimeMark
(
returnValue
);
}
else
if
(
functionId
.
getFunctionName
().
endsWith
(
"xf_parseIpv6Address"
))
{
exec_parseIpv6Address
(
parameterList
,
returnValue
);
}
else
if
(
functionId
.
getFunctionName
().
endsWith
(
"fx_hashWithSha256"
)
&&
(
parameterList
.
size
()
==
1
))
{
...
...
@@ -315,7 +318,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT
_logger
.
severe
(
"Unprocessed external function"
);
result
=
m_triKO
;
}
_logger
.
exiting
(
"
PluginAdapter
"
,
"
triExternalFunction
"
,
ByteHelper
.
byteArrayToString
(
returnValue
.
getEncodedParameter
()));
//TERFactory.getInstance().logDebug("<<<
PluginAdapter
.
triExternalFunction
: " +
ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
return
result
;
}
...
...
@@ -645,6 +648,23 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT
_logger
.
exiting
(
"PluginAdapter"
,
"exec_getCurrentTime"
,
ByteHelper
.
byteArrayToString
(
returnValue
.
getEncodedParameter
()));
}
// End of method exec_getCurrentTime
private
void
exec_getCurrentTimeMark
(
TriParameter
returnValue
)
{
//_logger.entering("PluginAdapter", "exec_getCurrentTimeMark");
// Execute the function
IntegerValue
time
=
_extfuncsImpl
.
fx_getCurrentTimeMark
();
//_logger.info(String.format("exec_getCurrentTimeMark returns %d", ((IntegerValueEx)time).getInt64()));
returnValue
.
setParameterPassingMode
(
TriParameterPassingMode
.
TRI_OUT
);
returnValue
.
setNumberOfBits
(
Long
.
SIZE
);
returnValue
.
setEncodedParameter
(
ByteHelper
.
longToByteArray
(
((
IntegerValueEx
)
time
).
getInt64
(),
4
/*Integer.SIZE / Byte.SIZE*/
// Encoding on 32 bits
));
//_logger.exiting("PluginAdapter", "exec_getCurrentTimeMark: ", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
}
// End of method exec_getCurrentTimeMark
private
void
exec_generateKeyPair
(
TriParameterList
parameterList
,
TriParameter
returnValue
)
{
_logger
.
entering
(
"PluginAdapter"
,
"exec_generateKeyPair"
);
...
...
javasrc/tool/org/etsi/its/tool/elvior/res/ta.properties
View file @
6ec3bb99
...
...
@@ -5,16 +5,21 @@ camPort=BTP/GN/ETH
#camPort=BTP/GN/CSG
# Define the port/layer configuration for DENM
denmPort
=
BTP/GN/ETH
#denmPort=BTP/GN/CSG
# Define the port/layer configuration for MAPEM-SPATEM
mapemSpatemPort
=
BTP/GN/ETH
#mapemSpatemPort=BTP/GN/CSG
# Define the port/layer configuration for IVIM
ivimPort
=
BTP/GN/ETH
#ivimPort=BTP/GN/CSG
# Define the port/layer configuration for SREM-SSEM
sremSsemPort
=
BTP/GN/ETH
#sremSsemPort=BTP/GN/CSG
# Define the port/layer configuration for BTP
btpPort
=
GN/ETH
# Define the port/layer configuration for GeoNetworking
geoNetworkingPort
=
ETH
#geoNetworkingPort=ETH
geoNetworkingPort
=
CSG
# Define the port/layer configuration for GeoNetworking over IPv6
ipv6OverGeoNetworkingPort
=
Debug
# Define the port/layer configuration for CALM FNTP
...
...
@@ -42,7 +47,9 @@ ConfigTesterSettings=172.17.15.39:12346
LocalEthernetMAC
=
00E08F008855
# Post-mortem ATS execution mode
OfflineMode
=
false
PcapFile
=
PcapFile
=
pcap/vendor/uc1.pcappng
OffsetTime
=
30 # Start at +30 seconds
OffsetFrame
=
# Define the Ethernet type value used by the IUT
IutEthernetTypeValue=0x8947
# Node Ethernet addresses
...
...
javasrc/tool/org/etsi/its/tool/testingtech/ExternalFunctionsPluginProvider.java
View file @
6ec3bb99
...
...
@@ -114,6 +114,18 @@ public class ExternalFunctionsPluginProvider implements ExternalFunctionsProvide
return
_externalFunctionsPluginProvider
.
fx_getCurrentTime
();
}
/**
* This external function gets the current time
* @return The current time in tenths of a second in the current or next hour in units of 1/10th second from UTC time
*
* TTCN-3 signature:
* external function fx_getCurrentTimeMark() return TimeMark;
*/
@Override
public
IntegerValue
fx_getCurrentTimeMark
()
{
return
_externalFunctionsPluginProvider
.
fx_getCurrentTimeMark
();
}
/**
* External function to compute timestamp based on current time
* @return Unix-Epoch-Time mod 2^32
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment