Commit 7ab73a70 authored by garciay's avatar garciay
Browse files

Changes after test session in Livorno (20160613-14):

- Add beacon support
- Bugs fixed in DENM message templates
- The 3 DENMs (D1..3) are sent at the same time
parent 96928c11
...@@ -109,6 +109,7 @@ module ItsRSUsSimulator_Functions { ...@@ -109,6 +109,7 @@ module ItsRSUsSimulator_Functions {
// Local variables // Local variables
var template (value) DenmParmContainers v_denmParmContainers; var template (value) DenmParmContainers v_denmParmContainers;
var template (omit) octetstring v_beacon := omit;
var template (omit) DENMs v_denms := omit; var template (omit) DENMs v_denms := omit;
var template (omit) CAM v_cam := omit; var template (omit) CAM v_cam := omit;
var template (omit) MAPEM v_mapem := omit; var template (omit) MAPEM v_mapem := omit;
...@@ -191,7 +192,8 @@ module ItsRSUsSimulator_Functions { ...@@ -191,7 +192,8 @@ module ItsRSUsSimulator_Functions {
PICS_DENM_RELEVANCE_TRAFFIC_DIRECTION PICS_DENM_RELEVANCE_TRAFFIC_DIRECTION
); );
v_denms[v_counter] := valueof( v_denms[v_counter] := valueof(
m_denmPdu( m_denmPdu_rsu(
PICS_RSU_PARAMS[p_rsu_id].stationID,
m_denm( m_denm(
v_denmParmContainers.managementContainer, v_denmParmContainers.managementContainer,
v_denmParmContainers.situationContainer, v_denmParmContainers.situationContainer,
...@@ -215,9 +217,14 @@ module ItsRSUsSimulator_Functions { ...@@ -215,9 +217,14 @@ module ItsRSUsSimulator_Functions {
PICS_RSU_PARAMS[p_rsu_id].pathHistory PICS_RSU_PARAMS[p_rsu_id].pathHistory
); );
} }
if (PICS_GENERATE_BEACON) {
// Build the list of the BeACON events
v_beacon := 'AAAAAAAA'O; // TODO Use a PICS
}
// Build the messages value list for this RSU // Build the messages value list for this RSU
vc_rsuMessagesValueList[p_rsu_id] := vc_rsuMessagesValueList[p_rsu_id] :=
m_rsuProfile( m_rsuProfile(
v_beacon,
v_cam, v_cam,
v_denms, v_denms,
v_mapem, v_mapem,
...@@ -242,6 +249,9 @@ module ItsRSUsSimulator_Functions { ...@@ -242,6 +249,9 @@ module ItsRSUsSimulator_Functions {
// Terminate simulation // Terminate simulation
if (p_cfEvent == "stop") { if (p_cfEvent == "stop") {
if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].beacon)) {
tc_beacon.stop;
}
if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].cam)) { if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].cam)) {
tc_cam.stop; tc_cam.stop;
} }
...@@ -266,6 +276,20 @@ module ItsRSUsSimulator_Functions { ...@@ -266,6 +276,20 @@ module ItsRSUsSimulator_Functions {
return false; return false;
} // End of function f_process_cf_event } // End of function f_process_cf_event
function f_prepare_beacon(
out template (value) Payload p_payload
) runs on ItsRSUsSimulator {
p_payload := valueof(
f_adaptPayload(
vc_rsuMessagesValueList[vc_rsu_id].beacon,
0,
-,
e_any
)
);
} // End of function f_prepare_cam
function f_prepare_cam( function f_prepare_cam(
out template (value) Payload p_payload out template (value) Payload p_payload
) runs on ItsRSUsSimulator { ) runs on ItsRSUsSimulator {
...@@ -410,22 +434,23 @@ module ItsRSUsSimulator_Functions { ...@@ -410,22 +434,23 @@ module ItsRSUsSimulator_Functions {
function f_adaptPayload( function f_adaptPayload(
in template (value) octetstring p_finalPayload, in template (value) octetstring p_finalPayload,
in template (value) BtpPortId p_destPort, in template (value) BtpPortId p_destPort,
in template (value) BtpPortId p_srcPort := 0 in template (value) BtpPortId p_srcPort := 0,
in NextHeader p_nextHeader := PX_GN_UPPER_LAYER
) return template (value) Payload { ) return template (value) Payload {
var template (value) Payload v_payload; var template (value) Payload v_payload;
if(PX_GN_UPPER_LAYER == e_any) { if(p_nextHeader == e_any) {
v_payload := { decodedPayload := omit, rawPayload := p_finalPayload}; v_payload := { decodedPayload := omit, rawPayload := p_finalPayload};
return v_payload; return v_payload;
} }
if(PX_GN_UPPER_LAYER == e_ipv6) { if(p_nextHeader == e_ipv6) {
log("*** " & testcasename() & ": INCONC: Layer IPv6 not supported ***"); log("*** " & testcasename() & ": INCONC: Layer IPv6 not supported ***");
setverdict(inconc); setverdict(inconc);
stop; stop;
} }
if(PX_GN_UPPER_LAYER == e_btpA) { if(p_nextHeader == e_btpA) {
v_payload := { v_payload := {
decodedPayload := { decodedPayload := {
btpPacket := m_btpAWithPorts( btpPacket := m_btpAWithPorts(
...@@ -442,7 +467,7 @@ module ItsRSUsSimulator_Functions { ...@@ -442,7 +467,7 @@ module ItsRSUsSimulator_Functions {
return v_payload; return v_payload;
} }
if(PX_GN_UPPER_LAYER == e_btpB) { if(p_nextHeader == e_btpB) {
v_payload := { v_payload := {
decodedPayload := { decodedPayload := {
btpPacket := m_btpBWithPorts( btpPacket := m_btpBWithPorts(
......
...@@ -558,6 +558,22 @@ module ItsRSUsSimulator_Pics { ...@@ -558,6 +558,22 @@ module ItsRSUsSimulator_Pics {
} // End of group camCommonSettings } // End of group camCommonSettings
} // End of group camParams
/**
* @desc This group describes the BEACON common settings for the RSUs CAM message broadcast
*/
group beaconParams {
/**
* @desc Common settings
*/
group beaconCommonSettings {
modulepar UInt32 PICS_BEACON_ITS_AID := 38;
} // End of group beaconCommonSettings
} // End of group rsuParameters } // End of group rsuParameters
/** /**
...@@ -595,7 +611,7 @@ module ItsRSUsSimulator_Pics { ...@@ -595,7 +611,7 @@ module ItsRSUsSimulator_Pics {
/** /**
* @desc DENM RelevanceDistance * @desc DENM RelevanceDistance
*/ */
modulepar RelevanceDistance PICS_DENM_RELEVANCE_DISTANCE := lessThan100m; modulepar RelevanceDistance PICS_DENM_RELEVANCE_DISTANCE := lessThan200m;
/** /**
* @desc DENM RelevanceTrafficDirection * @desc DENM RelevanceTrafficDirection
...@@ -5514,18 +5530,25 @@ module ItsRSUsSimulator_Pics { ...@@ -5514,18 +5530,25 @@ module ItsRSUsSimulator_Pics {
group generationFrequencies { group generationFrequencies {
modulepar boolean PICS_GENERATE_CAM := false; modulepar boolean PICS_GENERATE_BEACON := false;
modulepar boolean PICS_GENERATE_DENM := false; modulepar boolean PICS_GENERATE_CAM := true;
modulepar boolean PICS_GENERATE_IVIM := true; modulepar boolean PICS_GENERATE_DENM := true;
modulepar boolean PICS_GENERATE_MAPEM := true; modulepar boolean PICS_GENERATE_IVIM := false;
modulepar boolean PICS_GENERATE_SPATEM := true; modulepar boolean PICS_GENERATE_MAPEM := false;
modulepar boolean PICS_GENERATE_SPATEM := false;
modulepar boolean PICS_GENERATE_SSEM := true; modulepar boolean PICS_GENERATE_SSEM := true;
/**
* @desc CAM frequency timer
*/
modulepar float PICS_BEACON_FREQUENCY := 1.0;
/** /**
* @desc CAM frequency timer * @desc CAM frequency timer
*/ */
......
...@@ -45,6 +45,7 @@ module ItsRSUsSimulator_Templates { ...@@ -45,6 +45,7 @@ module ItsRSUsSimulator_Templates {
import from ItsRSUsSimulator_Pics all; import from ItsRSUsSimulator_Pics all;
template (omit) RsuMessagesValue m_rsuProfile( template (omit) RsuMessagesValue m_rsuProfile(
in template (omit) octetstring p_beacon := omit,
in template (omit) CAM p_cam := omit, in template (omit) CAM p_cam := omit,
in template (omit) DENMs p_denms := omit, in template (omit) DENMs p_denms := omit,
in template (omit) MAPEM p_mapem := omit, in template (omit) MAPEM p_mapem := omit,
...@@ -52,6 +53,7 @@ module ItsRSUsSimulator_Templates { ...@@ -52,6 +53,7 @@ module ItsRSUsSimulator_Templates {
in template (omit) IVIM p_ivim := omit, in template (omit) IVIM p_ivim := omit,
in template (omit) SSEM p_ssem := omit in template (omit) SSEM p_ssem := omit
) := { ) := {
beacon := p_beacon,
cam := p_cam, cam := p_cam,
denms := p_denms, denms := p_denms,
mapem := p_mapem, mapem := p_mapem,
...@@ -256,6 +258,18 @@ module ItsRSUsSimulator_Templates { ...@@ -256,6 +258,18 @@ module ItsRSUsSimulator_Templates {
group denmTemplates { group denmTemplates {
/**
* @desc Send template for DENM PDU
* @param p_denm The DEN Message
*/
template (value) DENM m_denmPdu_rsu(
in template (value) StationID p_stationID,
in template (value) DecentralizedEnvironmentalNotificationMessage p_denm
) := {
header := LibItsDenm_Templates.m_itsPduHeader(p_stationID),
denm := p_denm
}
/** /**
* @desc Send template for Alacarte Container including lanePosition * @desc Send template for Alacarte Container including lanePosition
*/ */
...@@ -287,7 +301,7 @@ module ItsRSUsSimulator_Templates { ...@@ -287,7 +301,7 @@ module ItsRSUsSimulator_Templates {
originatingStationID := p_originatingStationID, originatingStationID := p_originatingStationID,
sequenceNumber := p_sequenceNumber sequenceNumber := p_sequenceNumber
}, },
detectionTime := 0, detectionTime := f_getCurrentTime(),
referenceTime := f_getCurrentTime(), // FIXME To be checked referenceTime := f_getCurrentTime(), // FIXME To be checked
termination := omit, termination := omit,
eventPosition := p_eventPosition, eventPosition := p_eventPosition,
......
...@@ -40,6 +40,9 @@ module ItsRSUsSimulator_TestCases { ...@@ -40,6 +40,9 @@ module ItsRSUsSimulator_TestCases {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body // Test Body
if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].beacon)) {
tc_beacon.start;
}
if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].cam)) { if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].cam)) {
tc_cam.start; tc_cam.start;
} }
...@@ -92,6 +95,13 @@ module ItsRSUsSimulator_TestCases { ...@@ -92,6 +95,13 @@ module ItsRSUsSimulator_TestCases {
repeat; repeat;
} }
} }
[PICS_GENERATE_BEACON] tc_beacon.timeout {
log("*** " & testcasename() & ": DEBUG: Processing BEACON ***");
f_prepare_beacon(v_payload);
f_send(v_payload, PICS_CAM_ITS_AID);
tc_beacon.start;
repeat;
}
[PICS_GENERATE_CAM] tc_cam.timeout { [PICS_GENERATE_CAM] tc_cam.timeout {
log("*** " & testcasename() & ": DEBUG: Processing CAM ***"); log("*** " & testcasename() & ": DEBUG: Processing CAM ***");
f_prepare_cam(v_payload); f_prepare_cam(v_payload);
...@@ -101,8 +111,10 @@ module ItsRSUsSimulator_TestCases { ...@@ -101,8 +111,10 @@ module ItsRSUsSimulator_TestCases {
} }
[PICS_GENERATE_DENM] tc_denm.timeout { [PICS_GENERATE_DENM] tc_denm.timeout {
log("*** " & testcasename() & ": DEBUG: Processing DENM ***"); log("*** " & testcasename() & ": DEBUG: Processing DENM ***");
f_prepare_denm(v_payload); for (var integer v_i := 0; v_i < lengthof(vc_rsuMessagesValueList[vc_rsu_id].denms); v_i := v_i + 1) {
f_send(v_payload, PICS_DENM_ITS_AID); f_prepare_denm(v_payload);
f_send(v_payload, PICS_DENM_ITS_AID);
} // End of 'for'
tc_denm.start; tc_denm.start;
repeat; repeat;
} }
......
...@@ -83,6 +83,7 @@ module ItsRSUsSimulator_TestSystem { ...@@ -83,6 +83,7 @@ module ItsRSUsSimulator_TestSystem {
*/ */
var integer vc_spatemStatesNum := lengthof(vc_repitition_duration); var integer vc_spatemStatesNum := lengthof(vc_repitition_duration);
timer tc_beacon := PICS_BEACON_FREQUENCY;
timer tc_cam := PICS_CAM_FREQUENCY; timer tc_cam := PICS_CAM_FREQUENCY;
timer tc_denm := PICS_DENM_FREQUENCY; timer tc_denm := PICS_DENM_FREQUENCY;
timer tc_mapem := PICS_MAPEM_FREQUENCY; timer tc_mapem := PICS_MAPEM_FREQUENCY;
......
...@@ -44,12 +44,13 @@ module ItsRSUsSimulator_TypesAndValues { ...@@ -44,12 +44,13 @@ module ItsRSUsSimulator_TypesAndValues {
* @member denms List of DENM events that a RSU shall send * @member denms List of DENM events that a RSU shall send
*/ */
type record RsuMessagesValue { type record RsuMessagesValue {
CAM cam optional, octetstring beacon optional,
DENMs denms optional, CAM cam optional,
MAPEM mapem optional, DENMs denms optional,
SPATEMs spatems optional, MAPEM mapem optional,
IVIM ivim optional, SPATEMs spatems optional,
SSEM ssem optional IVIM ivim optional,
SSEM ssem optional
} // End of type RsuMessagesValue } // End of type RsuMessagesValue
/** /**
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment