Commit d8021f75 authored by berge's avatar berge
Browse files

Merged branches/Security/ttcn (r1471-1819) to trunk.

parent b91fc291
......@@ -2817,7 +2817,7 @@ module ItsCam_TestCases {
//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) {
v_yawRateVal := -32767;
v_yawRateVal := -32766;
}
else {
v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue+c_yawRateValOffset;
......
......@@ -1976,7 +1976,7 @@ module ItsDenm_TestCases {
m_situation(c_causeSlowVehicle, c_subCauseCode_Unavailable)
};
var ActionID v_unknownActionId;
var ActionIDList v_actionIds := {mw_actionId(f_getIutStationId()), mw_actionId(f_getIutStationId())};
var ActionIDList v_actionIds;
var DenmInd v_denmInd;
var integer i;
......@@ -1997,12 +1997,12 @@ module ItsDenm_TestCases {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_unknownActionId := m_actionId(
v_unknownActionId := valueof(m_actionId(
f_increaseSequenceNumber(
v_actionIds[lengthof(v_actionIds)].sequenceNumber
),
f_getIutStationId()
);
));
f_utTerminateEvent(m_utEventCancellation(v_unknownActionId));
tc_ac.start;
......@@ -2088,7 +2088,7 @@ module ItsDenm_TestCases {
};
var SequenceNumber v_sequenceNumber := v_initialSequenceNumber;
var ActionID v_unknownActionId;
var ActionIDList v_actionIds := {mw_actionId(f_getIutStationId()), mw_actionId(f_getIutStationId())};
var ActionIDList v_actionIds;
var DenmInd v_denmInd;
var integer i;
......@@ -2116,12 +2116,12 @@ module ItsDenm_TestCases {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_unknownActionId := m_actionId(
v_unknownActionId := valueof(m_actionId(
f_increaseSequenceNumber(
v_actionIds[lengthof(v_actionIds)].sequenceNumber
),
f_getTsStationId()
);
));
f_utTerminateEvent(m_utEventCancellation(v_unknownActionId));
tc_ac.start;
......@@ -3368,7 +3368,7 @@ module ItsDenm_TestCases {
v_actionId := f_sendDenMessage(v_denm);
f_sleep(1.0);
v_detectionTime2 := v_denm.management.detectionTime - 1000;
v_detectionTime2 := valueof(v_denm.management.detectionTime) - 1000;
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
......@@ -3478,7 +3478,7 @@ module ItsDenm_TestCases {
v_actionId := f_sendDenMessage(v_denm);
f_sleep(1.0);
v_detectionTime2 := v_denm.management.detectionTime + 1000;
v_detectionTime2 := valueof(v_denm.management.detectionTime) + 1000;
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
......
......@@ -142,7 +142,7 @@ module ItsGeoNetworking_TestCases {
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
v_gnPacket.basicHeader.version := v_gnPacket.basicHeader.version + 1;
v_gnPacket.basicHeader.version := valueof(v_gnPacket.basicHeader.version) + 1;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
......@@ -2002,7 +2002,7 @@ module ItsGeoNetworking_TestCases {
function f_TP_GEONW_PON_LOT_BV_03_main(in template (value) LongPosVector p_longPosVectorNodeA) runs on ItsGeoNetworking {
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(p_longPosVectorNodeA.gnAddr)) ) {
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNodeA.gnAddr))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -2014,7 +2014,7 @@ module ItsGeoNetworking_TestCases {
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(p_longPosVectorNodeA))) {
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNodeA)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
......@@ -2581,7 +2581,7 @@ module ItsGeoNetworking_TestCases {
function f_TP_GEONW_PON_LOT_BV_05_main(in template (value) LongPosVector p_longPosVectorNodeB, in template (value) LongPosVector p_obsoleteLongPosVectorNodeB) runs on ItsGeoNetworking {
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(p_longPosVectorNodeB.gnAddr)) ) {
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNodeB.gnAddr)))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -2593,12 +2593,12 @@ module ItsGeoNetworking_TestCases {
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(p_obsoleteLongPosVectorNodeB))) {
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_obsoleteLongPosVectorNodeB)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast received with obsolete Destination Position Vector ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(p_longPosVectorNodeB))) {
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNodeB)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
......@@ -6141,7 +6141,7 @@ module ItsGeoNetworking_TestCases {
// Test Body
if(not f_utTriggerEvent(m_generateGeoUnicastMessageWithTrafficClass(
v_longPosVectorNodeA.gnAddr,
m_trafficClass(e_scfDisabled)))) {
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -6286,7 +6286,7 @@ module ItsGeoNetworking_TestCases {
// Test Body
if(not f_utTriggerEvent(m_generateGeoAnycastMessageWithTrafficClass(
f_getArea(c_area2),
m_trafficClass(e_scfDisabled)))) {
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -6431,7 +6431,7 @@ module ItsGeoNetworking_TestCases {
// Test Body
if(not f_utTriggerEvent(m_generateGeoBroadcastMessageWithTrafficClass(
f_getArea(c_area2),
m_trafficClass(e_scfDisabled)))) {
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -6572,7 +6572,7 @@ module ItsGeoNetworking_TestCases {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateTsbMessageWithTrafficClass(m_trafficClass(e_scfDisabled)))) {
if(not f_utTriggerEvent(valueof(m_generateTsbMessageWithTrafficClass(valueof(m_trafficClass(e_scfDisabled)))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -6712,7 +6712,7 @@ module ItsGeoNetworking_TestCases {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateShbMessageWithTrafficClass(m_trafficClass(e_scfDisabled)))) {
if(not f_utTriggerEvent(valueof(m_generateShbMessageWithTrafficClass(valueof(m_trafficClass(e_scfDisabled)))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
......@@ -10678,7 +10678,7 @@ module ItsGeoNetworking_TestCases {
}
// Test Body
v_gnPacket.basicHeader.routerHopLimit := v_gnPacket.basicHeader.routerHopLimit / 2;
v_gnPacket.basicHeader.routerHopLimit := valueof(v_gnPacket.basicHeader.routerHopLimit) / 2;
f_sleep(PX_TAC);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_gnPacket.gnPacket.packet.payload.rawPayload); i:=i+1) {
// empty on purpose
......@@ -10729,7 +10729,7 @@ module ItsGeoNetworking_TestCases {
}
// Test Body
v_msgInd.msgIn.basicHeader.routerHopLimit := v_msgInd.msgIn.basicHeader.routerHopLimit / 2;
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) / 2;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
......@@ -11962,7 +11962,7 @@ module ItsGeoNetworking_TestCases {
}
// Test Body
v_msgInd.msgIn.basicHeader.routerHopLimit := v_msgInd.msgIn.basicHeader.routerHopLimit -1;
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) -1;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
tc_noac.start;
......@@ -12564,7 +12564,7 @@ module ItsGeoNetworking_TestCases {
}
// Test Body
v_msgInd.msgIn.basicHeader.routerHopLimit := v_msgInd.msgIn.basicHeader.routerHopLimit - 1;
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) - 1;
v_gnPacket := v_msgInd.msgIn;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
......
......@@ -10,7 +10,7 @@ module ItsGeoNetworking_TestControl {
// ATS GeoNetworking
import from ItsGeoNetworking_TestCases {testcase all};
// LibIts
// LibItsGeoNetworking
import from LibItsGeoNetworking_Pics all;
import from LibItsGeoNetworking_TypesAndValues all;
......
/**
* @author ETSI / STF481
* @version $URL$
* $Id$
* @desc Module containing functions for the secured GN ATS
*
*/
module AtsSecurity_Functions {
// LibIts
import from DENM_PDU_Descriptions language "ASN.1:1997" all;
import from ITS_Container language "ASN.1:1997" all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_Time all;
// LibItsCommon
import from LibItsCommon_TypesAndValues all;
import from LibItsCommon_TestSystem all;
import from LibItsCommon_Functions all;
// LibItsDenm
import from LibItsDenm_TypesAndValues all;
import from LibItsDenm_Templates all;
import from LibItsDenm_Functions all;
import from LibItsDenm_TestSystem all;
// LibItsCam
// import from LibItsCam_TypesAndValues all;
import from LibItsCam_Templates all;
import from LibItsCam_Functions all;
import from LibItsCam_TestSystem all;
// LibItsGeoNetworking
import from LibItsGeoNetworking_TestSystem all;
import from LibItsGeoNetworking_Functions all;
import from LibItsGeoNetworking_Templates all;
import from LibItsGeoNetworking_TypesAndValues all;
// LibItsSecurity
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Templates all;
import from LibItsSecurity_Functions all;
import from LibItsSecurity_Pixits all;
group secCam {
/**
* @desc Prepare a secured CAM
* @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_prepareSecuredCam(
in charstring p_configId,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256,
in boolean p_addMissingHeaders := true
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GnNonSecuredPacket v_gnNonSecuredPacket;
var octetstring v_gnPayload;
var template (value) SecuredMessage v_securedMessage;
// Build signed SecuredMessage
v_gnNonSecuredPacket := valueof(m_geoNwShbPacket(
f_getPosition(c_compNodeC)
));
// Add CAM payload
v_gnNonSecuredPacket.payload := valueof(
f_adaptPayload_m(
bit2oct(
encvalue(
m_camReq(
m_camMsg_vehicle_HF_BV(
f_getTsStationId(),
f_getCurrentTime() mod 65536, // See ETSI EN 302 637-2 V1.3.0 - Clause B.3 generationDelatTime
LibItsCam_Templates.m_tsPosition
))))));
// Encode it
v_gnPayload := bit2oct(
encvalue(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredCam(
v_securedMessage,
m_payload_signed(v_gnPayload),
p_signerInfoType,
p_headerFields,
p_configId,
p_addMissingHeaders
);
// Return secured Gn packet
return valueof(m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
} // End of function f_prepareSecuredCam
/**
* @desc Sends a secured CAM
* @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_sendSecuredCam(
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_prepareSecuredCam(p_configId, p_headerFields, p_signerInfoType);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
return v_securedGnPdu;
} // End of function f_sendSecuredCam
} // End of group secCam
group secDenm {
/**
* @desc Prepare a secured CENM
* @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_prepareSecuredDenm(
in charstring p_configId,
in template (omit) HeaderFields p_headerFields := omit,
in SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256,
in boolean p_addMissingHeaders := true
) runs on ItsGeoNetworking return GeoNetworkingPdu {
// Local variables
var GnNonSecuredPacket v_gnNonSecuredPacket;
var octetstring v_gnPayload;
var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
var template (value) SecuredMessage v_securedMessage;
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
// Build signed SecuredMessage
v_gnNonSecuredPacket := valueof(
m_geoNwBroadcastPacket(
v_longPosVectorNodeC,
vc_localSeqNumber,
f_getGeoBroadcastArea(
c_area2
)));
// Add the DENM payload
v_gnNonSecuredPacket.payload := valueof(
f_adaptPayload_m(
bit2oct(
encvalue(
m_denmReq(
m_denmPdu(
m_denm(
m_denmMgmtCon(
m_tsActionId
),
v_situation,
m_denmLocation_zeroDelta
)))))));
// Encode it
v_gnPayload := bit2oct(
encvalue(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredDenm(
v_securedMessage,
m_payload_signed(v_gnPayload),
p_signerInfoType,
valueof(m_threeDLocation(
v_longPosVectorNodeC.latitude,
v_longPosVectorNodeC.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_prepareSecuredDenm
/**
* @desc Sends a secured DENM
* @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_sendSecuredDenm(
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_prepareSecuredDenm(p_configId, p_headerFields, p_signerInfoType);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
return v_securedGnPdu;
} // End of function f_sendSecuredDenm
} // End of group secDenm
group camTrigger {
/**
* @desc Triggers a CAM change speed event to get a CAM frequency greather than 1 Hz (i.e. more than one CAM per seconds)
* @remark This function spawns an ItsCam component in alive mode
* @see fb_changeCamFrequencyGreatherThan1Hz()
* @return Reference to the component used to send the trigger
*/
function f_setCamFrequencyGreatherThan1Hz() runs on ItsBaseComponent return ItsCam {
var ItsCam v_camComponent;
v_camComponent := ItsCam.create("CAM Trigger");
v_camComponent.start(fb_setCamFrequencyGreatherThan1Hz());
v_camComponent.done;
return v_camComponent;
} // End of function f_setCamFrequencyGreatherThan1Hz
/**
* @desc Behaviour function for triggering a CAM change speed event on IUT
*/
function fb_setCamFrequencyGreatherThan1Hz() runs on ItsCam {
// Local variables
var SpeedValue v_speedValue := 1667; // in cm/s, e.g. 60Km/h = 1667 cm/s
map(self:utPort, system:camUtPort);
LibItsCam_Functions.f_utTriggerEvent(valueof(m_changeSpeed(v_speedValue)));
unmap(self:utPort, system:camUtPort);
} // End of function fb_setCamFrequencyGreatherThan1Hz
} // End of group camTrigger
group denmTrigger {
/**
* @desc Triggers a DENM event on IUT
* @remark This function spawns an ItsDenm component in alive mode
* @see fb_secTriggerDenmEvent()
* @return Reference to the component used to send the trigger
*/
function f_triggerDenmEvent() runs on ItsBaseComponent return ItsDenm {
var ItsDenm v_denmComponent;
v_denmComponent := ItsDenm.create("DENM Trigger") alive;
v_denmComponent.start(fb_secTriggerDenmEvent());
v_denmComponent.done;
return v_denmComponent;
} // End of function f_triggerDenmEvent
/**
* @desc Cancels all previously triggered DENM events on IUT
* @param p_denmComponent Reference of the component previously used to trigger DENM events
* @see fb_secCancelDenmEvent()
*/
function f_cancelDenmEvent(ItsDenm p_denmComponent) runs on ItsBaseComponent {
p_denmComponent.start(fb_secCancelDenmEvent());
p_denmComponent.done;
p_denmComponent.kill;
} // End of function f_cancelDenmEvent
/**
* @desc Behaviour function for triggering a DENM event on IUT
*/
function fb_secTriggerDenmEvent() runs on ItsDenm {
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
map(self:utPort, system:denmUtPort);
vc_default := activate(LibItsDenm_Functions.a_utDefault());
vc_utActionIDs[0] := LibItsDenm_Functions.f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta));
log("actionId=", vc_utActionIDs[0]);
} // End of function f_secTriggerDenmEvent
/**
* @desc Behaviour function for cancelling previously triggered DENM events on IUT
*/
function fb_secCancelDenmEvent() runs on ItsDenm {
// Local variables
var integer v_counter;
for (v_counter := 0; v_counter < lengthof(vc_utActionIDs); v_counter := v_counter + 1) {
LibItsDenm_Functions.f_utTerminateEvent(m_utEventCancellation(vc_utActionIDs[v_counter]));
} // End of 'for' statement
unmap(self:utPort, system:denmUtPort);
deactivate(vc_default);
} // End of function f_secTriggerDenmEvent
} // End of group denmTrigger
} // End of module AtsSecurity_Functions
/**
* @author ETSI / STF481
* @version $URL$
* $Id$
* @desc Module containing templates for secured GeoNetworking ATS
*
*/
module AtsSecurity_Templates {
// // LibIts
// import from DENM_PDU_Descriptions language "ASN.1:1997" all;
// import from ITS_Container language "ASN.1:1997" all;
//
// LibItsBtp
import from LibItsBtp_TypesAndValues all;
import from LibItsBtp_Templates all;
import from LibItsBtp_Pixits all;
// LibItsGeoNet
import from LibItsGeoNetworking_TypesAndValues all;
import from LibItsGeoNetworking_Templates all;
template (present) BtpPayload mw_btpCamPayload := {
decodedPayload := {
camPacket := ?
},
rawPayload := ?
} // End of template mw_btpCamPayload
template (present) BtpPayload mw_btpDenmPayload := {
decodedPayload := {
denmPacket := ?
},
rawPayload := ?
} // End of template mw_btpDenmPayload
template (present) Payload mw_secCamPayload := {
decodedPayload := {
btpPacket := mw_btpA(
PX_DESTINATION_PORT,
?,
mw_btpCamPayload
)
},
rawPayload := ?
} // End of template mw_secCamPayload
template (present) Payload mw_secDenmPayload := {
decodedPayload := {
btpPacket := mw_btpB(
PX_DESTINATION_PORT,
?,
mw_btpDenmPayload
)
},
rawPayload := ?
} // End of template mw_secCamPayload
} // End of module AtsSecurity_Templates
\ No newline at end of file
/**
* @author ETSI / STF481
* @version $URL$
* $Id$
* @desc Module containing t fest system description for the secured GN ATS
*
*/
module AtsSecurity_TestSystem {
import from LibItsCommon_TestSystem all;
import from LibItsCam_TestSystem all;
import from LibItsDenm_TestSystem all;
import from LibItsGeoNetworking_TestSystem all;
/**
* @desc Secured GN test system description