Commit be9063fb authored by filatov's avatar filatov
Browse files

Integrate the STF507 results to the trunk

parents d2f64f6e f5926bea
......@@ -28,14 +28,14 @@
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
......
......@@ -218,13 +218,13 @@
<parameter id="taParamDeclaration">
<parameter id="name" value="TsSecuredRootPath"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value=""/>
<parameter id="default"/>
<parameter id="description" value="Secured root path to access certificates and private keys"/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="TsSecuredConfiId"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value=""/>
<parameter id="default"/>
<parameter id="description" value="Secured configuration identifier"/>
</parameter>
<parameter id="taParamDeclaration">
......@@ -233,6 +233,48 @@
<parameter id="default" value="38"/>
<parameter id="description" value="ITS-AID for other profile"/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="GnssControllerAddress"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value="192.168.89.106"/>
<parameter id="description" value="IP address of GNSS Controller"/>
</parameter>
<parameter id="taParamDeclaration" value="${LibItsCommon_Pixits.PICS_GNSS_SCENARIO_SUPPORT}">
<parameter id="name" value="GnssScenarioSupport"/>
<parameter id="type" value="boolean"/>
<parameter id="default">
<value>
<Values:boolean xmlns:Values="Values.xsd" type="boolean">
<Values:value>true</Values:value>
</Values:boolean>
</value>
</parameter>
<parameter id="description" value="Is GNSS scenario support available?"/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="GnssScenario_StaticPos"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value="C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\StaticPos\StaticPos.scn"/>
<parameter id="description" value="Path to the GNSS scenario - static position."/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="GnssScenario_DynamicPos200m"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value="C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos200m\DynamicPos200m.scn"/>
<parameter id="description" value="Path to the GNSS scenario - dynamic position 200m."/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="GnssScenario_DynamicPos1000m"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value="C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos1000m\DynamicPos1000m.scn"/>
<parameter id="description" value="Path to the GNSS scenario - dynamic position 1000m."/>
</parameter>
<parameter id="taParamDeclaration">
<parameter id="name" value="GnssScenario_DynamicPos1500m"/>
<parameter id="type" value="charstring"/>
<parameter id="default" value="C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos1500m\DynamicPos1500m.scn"/>
<parameter id="description" value="Path to the GNSS scenario - dynamic position 1500m."/>
</parameter>
</parameter>
<parameter id="name" value="ITS System Adapter"/>
<parameter id="description" value="The ITS System Adapter providing the communication functionality to and from the SUT."/>
......
......@@ -14,11 +14,11 @@ module ItsCam_TpFunctions {
import from LibCommon_Time all;
import from LibCommon_BasicTypesAndValues all;
// LibItsCommon
import from LibItsCommon_Pixits all;
// LibIts
import from LibItsCommon_Functions all;
import from LibItsCommon_TypesAndValues {
type UtChangePosition
};
import from LibItsCommon_TypesAndValues all;
import from LibItsCam_TestSystem all;
import from LibItsCam_Functions all;
import from LibItsCam_Templates all;
......@@ -168,7 +168,7 @@ module ItsCam_TpFunctions {
// Test Body
for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
f_changeSpeed(v_speedValues[v_cntSpeed]);
v_cntTime := 0;
tc_ac.start;
alt {
......@@ -320,7 +320,7 @@ module ItsCam_TpFunctions {
// Test Body
for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
f_changeSpeed(v_speedValues[v_cntSpeed]);
v_cntTime := 0;
tc_ac.start;
alt {
......@@ -419,6 +419,7 @@ module ItsCam_TpFunctions {
/**
* @desc TP Function for TC_CAM_MSD_INA_BV_01_01
*/
// TODO yann/ifsttar: why 3601? 0 and 3600 indicates the north!!!!
function f_CAM_MSD_INA_BV_01_01() runs on ItsCam {
// Local variables
......@@ -466,7 +467,7 @@ module ItsCam_TpFunctions {
} else { // TODO Add negative value case
v_curVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue - c_curValOffset;
if (valueof(v_curVal) < -30000) {
v_curVal := 0;
v_curVal := 0; // yann/ifsttar TODO It's not a true negative modulus operation
}
}
f_utTriggerEvent(m_changeCurvature(c_curValOffset));
......@@ -1597,7 +1598,7 @@ module ItsCam_TpFunctions {
log("*** " & testcasename() & ": Checking INFO==Heading value ***");
// change the heading value to retrieve the current value
f_utTriggerEvent(m_changeHeading(c_headingValOffset));
f_changeHeading(c_headingValOffset);
tc_ac.start;
alt {
......@@ -1612,7 +1613,7 @@ module ItsCam_TpFunctions {
v_initialReceived := true;
//change again the heading value and set the expectation to the measured value
v_headingVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.heading.headingValue+c_headingValOffset) mod 3601;
f_utTriggerEvent(m_changeHeading(c_headingValOffset));
f_changeHeading(c_headingValOffset);
tc_ac.start;
repeat;
}
......@@ -1660,7 +1661,7 @@ module ItsCam_TpFunctions {
log("*** " & testcasename() & ": Checking INFO==Speed value ***");
// change the speed value to retrieve the current value
f_utTriggerEvent(m_changeSpeed(c_speedValOffset));
f_changeSpeed(c_speedValOffset);
tc_ac.start;
alt {
......@@ -1675,7 +1676,7 @@ module ItsCam_TpFunctions {
v_initialReceived := true;
//change again the speed value and set the expectation to the measured value
v_speedVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue+c_speedValOffset) mod 16384;
f_utTriggerEvent(m_changeSpeed(c_speedValOffset));
f_changeSpeed(c_speedValOffset);
tc_ac.start;
repeat;
}
......@@ -1798,7 +1799,8 @@ module ItsCam_TpFunctions {
v_initialReceived := true;
//change again the yaw rate value and set the expectation to the measured value
v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue;
if (valueof(v_yawRateVal)>=32767) {
if (valueof(v_yawRateVal)>=32767) { // FIXME Yann/ifsttar: quid if we receive -32768
// FIXME if current value is 32760 and offset applied, we shall not expect posiive value
v_yawRateVal := -32766;
}
else {
......@@ -2236,7 +2238,7 @@ module ItsCam_TpFunctions {
}
t_minTransInterval.start;
}
f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
f_changeSpeed(v_speedValues[v_cntSpeed]);
}
t_minTransInterval.stop;
log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***");
......@@ -2403,7 +2405,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_utTriggerEvent(m_changeSpeed(1000));
f_changeSpeed(1000);
tc_ac.start;
alt {
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
......@@ -2513,7 +2515,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_utTriggerEvent(m_changeHeading(v_changeHeadingValue));
f_changeHeading(v_changeHeadingValue);
t_genCam_dcc.timeout;
t_genCam_min.start;
alt {
......@@ -2543,7 +2545,7 @@ module ItsCam_TpFunctions {
timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90;
var CamInd v_camPdu;
var ReferencePosition v_referencePosition, v_expectedReferencePosition;
var integer v_changePosValue := 8; // 8 >> 4m
var float v_changePosValue := 8.0; // 8 >> 4m
// Test control
if (not PICS_CAM_GENERATION) {
......@@ -2577,10 +2579,16 @@ module ItsCam_TpFunctions {
// Test Body
v_expectedReferencePosition := f_computePositionUsingDistance(v_referencePosition, v_changePosValue);
f_utChangePosition ( valueof ( UtChangePosition: {
if (PICS_GNSS_SCENARIO_SUPPORT == false) {
f_utChangePosition(
valueof(
UtChangePosition: {
latitude := v_expectedReferencePosition.latitude - v_referencePosition.latitude,
longitude := v_expectedReferencePosition.longitude - v_referencePosition.longitude,
elevation := 0 } ) );
elevation := 0
}
));
}
t_genCam_dcc.timeout;
t_genCam_dcc.start;
alt {
......@@ -2644,7 +2652,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_utTriggerEvent(m_changeSpeed(v_changeSpeedValue));
f_changeSpeed(v_changeSpeedValue);
t_genCam_dcc.timeout;
t_genCam_min.start;
alt {
......@@ -2706,7 +2714,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_utTriggerEvent(m_changeSpeed(1000));
f_changeSpeed(1000);
tc_ac.start;
alt {
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
......
......@@ -269,7 +269,10 @@ module ItsGeoNetworking_TpFunctions {
/**
* @desc TP Function for TC_GEONW_FDV_COH_BV_03
*/
function f_GEONW_FDV_COH_BV_03() runs on ItsGeoNetworking {
function f_GEONW_FDV_COH_BV_03(
in template (present) UInt8 p_hopLimit := f_getDefaultHopLimit(),
in template (present) Bit8 p_flags := f_isMobile()
) runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut;
......@@ -300,7 +303,7 @@ module ItsGeoNetworking_TpFunctions {
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithHlAndFlags(mw_longPosVectorPosition_withDelta(v_longPosVectorIut), ?, f_getDefaultHopLimit(), f_isMobile())))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithHlAndFlags(mw_longPosVectorPosition_withDelta(v_longPosVectorIut), ?, p_hopLimit, p_flags)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Correct GeoNetworking Common Header received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
......@@ -1792,7 +1795,7 @@ module ItsGeoNetworking_TpFunctions {
}
// Test component configuration
f_cf01Up();
f_cf01Up();//FIXME ac change position, not used by C2C
v_longPosVectorIut := f_getPosition(c_compIut);
v_previouslongPosVectorIut := v_longPosVectorIut;
v_previouslongPosVectorIut.timestamp := ?;
......@@ -6706,7 +6709,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var integer v_distance := f_getCbfMaxCommunicationRange() - 10;
var float v_distance := int2float(f_getCbfMaxCommunicationRange() - 10);
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
......@@ -6749,7 +6752,7 @@ module ItsGeoNetworking_TpFunctions {
* @param p_distanceToNodeA Distance between IUT and NodeA
* @param p_longPosVectorNodeA Position vector of NodeA
*/
function f_GEONW_PON_GUC_BV_06_nodeB(in integer p_distanceToNodeA, in LongPosVector p_longPosVectorNodeA) runs on ItsGeoNetworking {
function f_GEONW_PON_GUC_BV_06_nodeB(in float p_distanceToNodeA, in LongPosVector p_longPosVectorNodeA) runs on ItsGeoNetworking {
// Local variables
timer t_toCbf := (int2float(f_getGeoUnicastCbfMaxTime())
......@@ -7038,7 +7041,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var integer v_distance := f_getCbfMaxCommunicationRange() - 10;
var float v_distance := int2float(f_getCbfMaxCommunicationRange() - 10);
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
......@@ -7202,7 +7205,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var integer v_distance := f_getCbfMaxCommunicationRange() - 10;
var float v_distance := int2float(f_getCbfMaxCommunicationRange() - 10);
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
......
......@@ -112,15 +112,19 @@ module AtsSecurity_Functions {
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @param p_alterATCertificateSignature Set to true to alter the AT certificate signature
* @param p_alterAACertificateSignature Set to true to alter the AA certificate signature
* @return Secured GeoNetworking packet containing a CAM
*/
function f_prepareSecuredCam_Bo(
in charstring p_configId,
in integer p_protocolVersion := c_protocol_version,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 0,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256,
in boolean p_addMissingHeaders := true
in boolean p_addMissingHeaders := true,
in boolean p_alterATCertificateSignature := false,
in boolean p_alterAACertificateSignature := false
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GnNonSecuredPacket v_gnNonSecuredPacket;
......@@ -158,10 +162,13 @@ module AtsSecurity_Functions {
p_signerInfoType,
p_headerFields,
p_configId,
p_addMissingHeaders
p_addMissingHeaders,
p_alterATCertificateSignature,
p_alterAACertificateSignature
);
// Return secured Gn packet
// log("f_prepareSecuredCam_Bo: ", m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
return valueof(m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
} // End of function f_prepareSecuredCam_Bo
......@@ -201,7 +208,7 @@ module AtsSecurity_Functions {
*/
function f_sendSecuredCam_Bo(
in charstring p_configId,
in integer p_protocolVersion := c_protocol_version,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 1,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256
......@@ -210,6 +217,7 @@ module AtsSecurity_Functions {
// Local variables
var GeoNetworkingPdu v_securedGnPdu := f_prepareSecuredCam_Bo(p_configId, p_protocolVersion, p_trailerStatus, p_headerFields, p_signerInfoType);
// log("v_securedGnPdu = ", v_securedGnPdu);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
return v_securedGnPdu;
......@@ -304,7 +312,7 @@ module AtsSecurity_Functions {
*/
function f_prepareSecuredDenm_Bo(
in charstring p_configId,
in integer p_protocolVersion := c_protocol_version,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 0,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate,
......@@ -402,7 +410,7 @@ module AtsSecurity_Functions {
*/
function f_sendSecuredDenm_Bo(
in charstring p_configId,
in integer p_protocolVersion := c_protocol_version,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 1,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256
......@@ -418,6 +426,174 @@ module AtsSecurity_Functions {
} // End of group secDenm
group secBeacon {
/**
* @desc Prepare a secured Beacon
* @param p_configId The configuration identifier to be used
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @return Secured GeoNetworking packet containing a CAM
*/
function f_prepareSecuredBeacon(
in charstring p_configId,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate,
in boolean p_addMissingHeaders := true
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GnNonSecuredPacket v_gnNonSecuredPacket;
var octetstring v_gnPayload;
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
var template (value) SecuredMessage v_securedMessage;
// Build signed SecuredMessage
v_gnNonSecuredPacket := valueof(
m_geoNwBroadcastPacket(
v_longPosVectorNodeB,
vc_localSeqNumber,
f_getGeoBroadcastArea(
c_area1 // Select area1 (see ETSI TS 102 871-2 Clause 4.2 Configuration 1)
)));
// Encode it
v_gnPayload := bit2oct(
encvalue(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredOtherMessage(
v_securedMessage,
m_payload_signed(v_gnPayload),
p_signerInfoType,
valueof(m_threeDLocation(
v_longPosVectorNodeB.latitude,
v_longPosVectorNodeB.longitude,
'0000'O
)),
p_headerFields,
p_configId,
p_addMissingHeaders
);
// Return secured Gn packet
return valueof(m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
} // End of function f_prepareSecuredBeacon
/**
* @desc Prepare a secured Beacon including wrong elements of protocols. It is used for BO test cases
* @param p_configId The configuration identifier to be used
* @param p_protocolVersion The protocol version to be set. Default: 2
* @param p_trailerStatus The Traile behaviour:
* <li>0 for no trailer</li>
* <li>1 for invalid trailer</li>
* <li>2 for duplicated trailer</li>
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @return Secured GeoNetworking packet containing a CAM
*/
function f_prepareSecuredBeacon_Bo(
in charstring p_configId,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 0,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate,
in boolean p_addMissingHeaders := true
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GnNonSecuredPacket v_gnNonSecuredPacket;
var octetstring v_gnPayload;
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
var template (value) SecuredMessage v_securedMessage;
// Build signed SecuredMessage
v_gnNonSecuredPacket := valueof(
m_geoNwBroadcastPacket(
v_longPosVectorNodeB,
vc_localSeqNumber,
f_getGeoBroadcastArea(
c_area1 // Select area1 (see ETSI TS 102 871-2 Clause 4.2 Configuration 1)
)));
// Encode it
v_gnPayload := bit2oct(
encvalue(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredOtherMessage_Bo(
v_securedMessage,
p_protocolVersion,
p_trailerStatus,
m_payload_signed(v_gnPayload),
p_signerInfoType,
valueof(m_threeDLocation(
v_longPosVectorNodeB.latitude,
v_longPosVectorNodeB.longitude,
'0000'O
)),
p_headerFields,
p_configId,
p_addMissingHeaders
);
// Return secured Gn packet
return valueof(m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
} // End of function f_prepareSecuredBeacon_Bo
/**
* @desc Sends a secured Beacon
* @param p_configId The configuration identifier to be used
* @param p_headerFields Additional HeaderFields
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @return GeoNetworking payload
*/
function f_sendSecuredBeacon(
in charstring p_configId,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GeoNetworkingPdu v_securedGnPdu := f_prepareSecuredBeacon(p_configId, p_headerFields, p_signerInfoType);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
return v_securedGnPdu;
} // End of function f_sendSecuredBeacon
/**
* @desc Sends a secured Beacon including wrong elements of protocols. It is used for BO test cases
* @param p_configId The configuration identifier to be used
* @param p_protocolVersion The protocol version to be set. Default: 2
* @param p_trailerStatus The Traile behaviour:
* <li>0 for no trailer</li>
* <li>1 for invalid trailer</li>
* <li>2 for duplicated trailer</li>
* @param p_headerFields Additional HeaderFields
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @return GeoNetworking payload
*/
function f_sendSecuredBeacon_Bo(
in charstring p_configId,
in UInt8 p_protocolVersion := c_protocol_version,
in integer p_trailerStatus := 1,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GeoNetworkingPdu v_securedGnPdu := f_prepareSecuredBeacon_Bo(p_configId, p_protocolVersion, p_trailerStatus, p_headerFields, p_signerInfoType);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
return v_securedGnPdu;
} // End of function f_sendSecuredBeacon_Bo
} // End of group secBeacon
group camTrigger {
/**
......
......@@ -37,7 +37,7 @@ module AtsSecurity_Templates {
template (present) Payload mw_secCamPayload := {
decodedPayload := {
btpPacket := mw_btpB(
btpPacket := mw_btpA(
PX_DESTINATION_PORT,
?,
mw_btpCamPayload
......
......@@ -22,7 +22,7 @@ module AtsSecurity_TestSystem {
*/
type component ItsSecSystem {
port AdapterControlPort acPort;
port LibItsGeoNetworking_TestSystem.AdapterControlPort acPort;
// NT2 ports
port LibItsGeoNetworking_TestSystem.UpperTesterPort utPort;
......
/**
* @author ETSI / STF507
* @version $UR$
* $Id$
* @desc Module containing Pics for Security ATS
*
*/
module ItsSecurity_Pics {
/**
* @desc Set to true to enable specific behavior to validate ITS Security ATS against itself
*/
modulepar boolean PICS_DEBUG_ADDON := false;
} // End of module ItsSecurity_Pics
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -17,75 +17,153 @@ module ItsSecurity_TestControl {
// Test Execution
control {
/**
* @desc Sending behaviour test cases
* @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2 Sending behaviour
*/
if (PICS_GN_SECURITY) {
if (PICS_ITS_AID_OTHER_PROFILE) {
execute(TC_SEC_ITSS_SND_MSG_01());
}
execute(TC_SEC_ITSS_SND_MSG_04_01());
execute(TC_SEC_ITSS_SND_MSG_04_02());
execute(TC_SEC_ITSS_SND_MSG_05_01());