Loading ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +342 −8 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ module LibItsGeoNetworking_Functions { // Libcommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_VerdictControl {type FncRetCode;} import from LibCommon_Sync {altstep all}; // LibIts import from LibIts_TestSystem all; Loading Loading @@ -53,27 +54,331 @@ module LibItsGeoNetworking_Functions { } // end f_ptcGeoNetworkingDown group geoConfigurationFunctions { /** * @desc This configuration features: * - one ITS node (IUT) * - two ITS nodes (nodeA, nodeB) */ function f_cf01Up() runs on ItsNt { // Variables var PositionTable v_positionTable := {}; // Map map(self:geoNetworkingPort, system:geoNetworkingPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_initialiseComponent(v_positionTable, c_compNodeB); } // end f_cf01Up /** * @desc Deletes configuration cf01 */ function f_cf01Down() runs on ItsNt { // Map unmap(self:geoNetworkingPort, system:geoNetworkingPort); } // end f_cf01Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node (NodeB) * - Area1 which only includes Tester * Tester being close to the area center * * @param p_nodeA * @param p_nodeB */ function f_cf02Up(out ItsNt p_nodeA, out ItsNt p_nodeB) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeA.done; p_nodeB.done; } // end f_cf02Up /** * @desc Deletes configuration cf02 * @param p_nodeA * @param p_nodeB */ function f_cf02Down(in ItsNt p_nodeA, in ItsNt p_nodeB) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); } // end f_cf02Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node not in direction of NodeA (NodeB) * - one ITS node in direction of Tester (NodeC) * - Area1 which only includes NodeA, NodeB and IUT, */ function f_cf03Up(out ItsNt p_nodeA, out ItsNt p_nodeB, out ItsNt p_nodeC) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; p_nodeC := ItsNt.create(c_compNodeC) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); connect(p_nodeC:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_addPosition(v_positionTable, c_compNodeC, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeC.start(f_initialiseComponent(v_positionTable, c_compNodeC)); p_nodeA.done; p_nodeB.done; p_nodeC.done; } // end f_cf03Up /** * @desc Deletes configuration cf03 * @param p_nodeA * @param p_nodeB * @param p_nodeC */ function f_cf03Down(in ItsNt p_nodeA, in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); disconnect(p_nodeC:syncPort, self:syncPort); } // end f_cf03Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node in direction of NodeA and having * shortest distance to NodeA (NodeB) * - one ITS node in direction of NodeA (NodeD) * - one ITS node not in direction of NodeA (NodeC) * - Area2 which only includes NodeA, NodeB and NodeD, * NodeB being close to the area center */ function f_cf04Up(out ItsNt p_nodeA, out ItsNt p_nodeB, out ItsNt p_nodeC, out ItsNt p_nodeD) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; p_nodeC := ItsNt.create(c_compNodeC) alive; p_nodeD := ItsNt.create(c_compNodeD) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeD:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); connect(p_nodeC:syncPort, self:syncPort); connect(p_nodeD:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_addPosition(v_positionTable, c_compNodeC, f_computePosition()); f_addPosition(v_positionTable, c_compNodeD, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeC.start(f_initialiseComponent(v_positionTable, c_compNodeC)); p_nodeD.start(f_initialiseComponent(v_positionTable, c_compNodeD)); p_nodeA.done; p_nodeB.done; p_nodeC.done; p_nodeD.done; } // end f_cf04Up /** * @desc Deletes configuration cf04 * @param p_nodeA * @param p_nodeB * @param p_nodeC * @param p_nodeD */ function f_cf04Down(in ItsNt p_nodeA, in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeD:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); disconnect(p_nodeC:syncPort, self:syncPort); disconnect(p_nodeD:syncPort, self:syncPort); } // end f_cf04Down function f_initialiseComponent( in PositionTable p_positionTable, in charstring p_componentName) runs on ItsNt { vc_positionTable := p_positionTable; vc_componentName := p_componentName; } // end f_initialiseComponent } // end geoConfigurationFunctions group geoPositionFunctions { function f_addPosition( inout PositionTable p_positionTable, in charstring p_positionKey, in LongPosVector p_positionValue) { // TODO } function f_getPosition( in PositionTable p_positionTable, in charstring p_positionKey) return LongPosVector { var LongPosVector v_return; // TODO return v_return; } function f_computePosition() return LongPosVector { var LongPosVector v_return; // TODO return v_return; } } // end geoPositionFunctions group geoAltsteps { /** * @desc The base default. */ altstep a_default() runs on ItsNt { var LongPosVector v_iutLongPosVector; [] a_receiveLsRequest( ?, ?, ?, v_iutLongPosVector ) { repeat; } [] geoNetworkingPort.receive { setverdict (inconc, "Received an unexpected message"); setverdict (inconc, "*** INCONC: Received an unexpected message ***"); //TODO shall stop be called here? stop; } [] tc_wait.timeout { setverdict (inconc, "Timeout while awaiting reaction of the IUT prior to Upper Tester action"); setverdict (inconc, "*** INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); //TODO shall stop be called here? stop; } [] tc_ac.timeout { setverdict (inconc, "Timeout while awaiting the reception of a message"); setverdict (inconc, "*** INCONC: Timeout while awaiting the reception of a message ***"); //TODO shall stop be called here? stop; } [] a_shutdown { f_poDefault(); log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } altstep a_neighbourDefault() runs on ItsNt { [] a_receiveLsRequestAndReply( ?, ?, f_getPosition(vc_positionTable, vc_componentName).gnAddr, f_getPosition(vc_positionTable, vc_componentName), f_getPosition(vc_positionTable, vc_componentName), e_vehicleStation ) { repeat; } [] a_shutdown { f_poNeighbour(); log("*** a_neighbourDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } [] a_default() { } } group geoGeoUnicastAltsteps { Loading Loading @@ -190,13 +495,24 @@ module LibItsGeoNetworking_Functions { activate(a_default()); } function f_prNonNeighbour() runs on ItsNt { f_prDefault(); } function f_prNeighbour() runs on ItsNt { activate(a_neighbourDefault()); f_taStartBeaconing( m_beaconHeader( f_getPosition(vc_positionTable, vc_componentName) ) ); } /** * @desc Brings the IUT into an initial state. * @return */ function f_prInitialState() runs on ItsNt { f_prDefault(); function f_prInitialState() { // TODO: any specific action ? Loading Loading @@ -279,6 +595,12 @@ module LibItsGeoNetworking_Functions { function f_poDefault() runs on ItsNt { setverdict(pass); } function f_poNeighbour() runs on ItsNt { f_taStopBeaconing(vc_componentName); f_poDefault(); } } // end postambles group upperTester { Loading Loading @@ -309,7 +631,7 @@ module LibItsGeoNetworking_Functions { } function f_taStopBeaconing() { function f_taStopBeaconing(in charstring p_compName) { //TODO Loading Loading @@ -360,7 +682,7 @@ module LibItsGeoNetworking_Functions { group testerFunctions { function f_sendGeoNetMessage(in GeoNetworkingReq p_geoNetReq) runs on ItsNt { function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsNt { geoNetworkingPort.send(p_geoNetReq); if (not (ischosen(p_geoNetReq.msgOut.header.shbHeader) or ischosen(p_geoNetReq.msgOut.header.beaconHeader))) { f_setLocalSequenceNumber(); Loading Loading @@ -475,6 +797,18 @@ module LibItsGeoNetworking_Functions { return v_itsGnBeaconServiceMaxJitter; } /** * @desc Gets the Lifetime of a Location Table Entry. * @return */ function f_getLifetimeLocTE() return float { var float v_itsGnLifetimeLocTE := 20.0; //TODO get the value from PIXIT or from the above calculation return v_itsGnLifetimeLocTE; } // end f_getLifetimeLocTE } // end iutFunctions group neighborFunctions { Loading ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +8 −9 Original line number Diff line number Diff line Loading @@ -395,10 +395,10 @@ module LibItsGeoNetworking_Templates { } template Header mw_lsReplyHeader( template (present) StationTypeIdentifier p_stationType, template (present) UInt16 p_seqNumber, template (present) LongPosVector p_sourceLongPosVec, template (present) LongPosVector p_destinationLongPosVec) in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) LongPosVector p_sourceLongPosVec, in template (present) LongPosVector p_destinationLongPosVec) modifies mw_lsReplyHeaderAny := { lsReplyHeader := { srcPosVector := p_sourceLongPosVec, Loading @@ -419,8 +419,7 @@ module LibItsGeoNetworking_Templates { group beaconHeaderTemplates { template (value) Header m_beaconHeader( in template (value) LongPosVector p_senderLongPosVec, in template (value) StationTypeIdentifier p_stationType in template (value) LongPosVector p_senderLongPosVec ) := { beaconHeader := { commonHeader := m_commonHeader( Loading @@ -429,13 +428,13 @@ module LibItsGeoNetworking_Templates { m_trafficClass, c_defaultHopLimit, p_senderLongPosVec, p_stationType e_vehicleStation ) } } template Header mw_beaconHeader( in template (value) StationTypeIdentifier p_stationType in template (present) StationTypeIdentifier p_stationType ) := { beaconHeader := { commonHeader := mw_commonHeader( Loading Loading @@ -481,7 +480,7 @@ module LibItsGeoNetworking_Templates { } template Header mw_shbHeader( in template (value) StationTypeIdentifier p_stationType in template (present) StationTypeIdentifier p_stationType ) := { shbHeader := { commonHeader := mw_commonHeader( Loading ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +21 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,27 @@ module LibItsGeoNetworking_TypesAndValues { import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; group geoConfigurationValues { const charstring c_compIut := "IUT"; const charstring c_compNodeA := "NodeA"; const charstring c_compNodeB := "NodeB"; const charstring c_compNodeC := "NodeC"; const charstring c_compNodeD := "NodeD"; } // end geoConfigurationValues group geoConfigurationTypes { type record PositionEntry { charstring key, LongPosVector position } type record of PositionEntry PositionTable; } // end geoConfigurationTypes group geoNwValues { group geoNwHeaderConstants { Loading ttcn/LibIts_Interface.ttcn +4 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ module LibIts_Interface { // LibCommon import from LibCommon_Time {modulepar all;} import from LibCommon_Sync all; group adapterInterface { Loading @@ -39,7 +40,7 @@ module LibIts_Interface { group adapterComponent { type component ItsAdapterComponent { type component ItsAdapterComponent extends ClientSyncComp { // Adapter ports port UpperTesterPort utPort; Loading Loading @@ -122,6 +123,8 @@ module LibIts_Interface { //variables var UInt16 vc_localSeqNumber := 0; var PositionTable vc_positionTable := {}; var charstring vc_componentName := ""; } // end ItsNt Loading ttcn/LibIts_TestSystem.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -12,13 +12,14 @@ module LibIts_TestSystem { // LibCommon import from LibCommon_Time {modulepar all}; import from LibCommon_Sync all; group componentDefinitions { /** * @desc ITS Main Test Component */ type component ItsMtc { type component ItsMtc extends ServerSyncComp { // timers timer tc_guard := PX_TDONE; Loading Loading
ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +342 −8 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ module LibItsGeoNetworking_Functions { // Libcommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_VerdictControl {type FncRetCode;} import from LibCommon_Sync {altstep all}; // LibIts import from LibIts_TestSystem all; Loading Loading @@ -53,27 +54,331 @@ module LibItsGeoNetworking_Functions { } // end f_ptcGeoNetworkingDown group geoConfigurationFunctions { /** * @desc This configuration features: * - one ITS node (IUT) * - two ITS nodes (nodeA, nodeB) */ function f_cf01Up() runs on ItsNt { // Variables var PositionTable v_positionTable := {}; // Map map(self:geoNetworkingPort, system:geoNetworkingPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_initialiseComponent(v_positionTable, c_compNodeB); } // end f_cf01Up /** * @desc Deletes configuration cf01 */ function f_cf01Down() runs on ItsNt { // Map unmap(self:geoNetworkingPort, system:geoNetworkingPort); } // end f_cf01Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node (NodeB) * - Area1 which only includes Tester * Tester being close to the area center * * @param p_nodeA * @param p_nodeB */ function f_cf02Up(out ItsNt p_nodeA, out ItsNt p_nodeB) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeA.done; p_nodeB.done; } // end f_cf02Up /** * @desc Deletes configuration cf02 * @param p_nodeA * @param p_nodeB */ function f_cf02Down(in ItsNt p_nodeA, in ItsNt p_nodeB) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); } // end f_cf02Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node not in direction of NodeA (NodeB) * - one ITS node in direction of Tester (NodeC) * - Area1 which only includes NodeA, NodeB and IUT, */ function f_cf03Up(out ItsNt p_nodeA, out ItsNt p_nodeB, out ItsNt p_nodeC) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; p_nodeC := ItsNt.create(c_compNodeC) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); connect(p_nodeC:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_addPosition(v_positionTable, c_compNodeC, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeC.start(f_initialiseComponent(v_positionTable, c_compNodeC)); p_nodeA.done; p_nodeB.done; p_nodeC.done; } // end f_cf03Up /** * @desc Deletes configuration cf03 * @param p_nodeA * @param p_nodeB * @param p_nodeC */ function f_cf03Down(in ItsNt p_nodeA, in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); disconnect(p_nodeC:syncPort, self:syncPort); } // end f_cf03Down /** * @desc This configuration features: * - one ITS node (IUT) * - one ITS node (NodeA) * - one ITS node in direction of NodeA and having * shortest distance to NodeA (NodeB) * - one ITS node in direction of NodeA (NodeD) * - one ITS node not in direction of NodeA (NodeC) * - Area2 which only includes NodeA, NodeB and NodeD, * NodeB being close to the area center */ function f_cf04Up(out ItsNt p_nodeA, out ItsNt p_nodeB, out ItsNt p_nodeC, out ItsNt p_nodeD) runs on ItsMtc { // Variables var PositionTable v_positionTable := {}; // Create p_nodeA := ItsNt.create(c_compNodeA) alive; p_nodeB := ItsNt.create(c_compNodeB) alive; p_nodeC := ItsNt.create(c_compNodeC) alive; p_nodeD := ItsNt.create(c_compNodeD) alive; // Map map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); map(p_nodeD:geoNetworkingPort, system:geoNetworkingPort); // Connect connect(p_nodeA:syncPort, self:syncPort); connect(p_nodeB:syncPort, self:syncPort); connect(p_nodeC:syncPort, self:syncPort); connect(p_nodeD:syncPort, self:syncPort); // Position table f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector()); f_addPosition(v_positionTable, c_compNodeA, f_computePosition()); f_addPosition(v_positionTable, c_compNodeB, f_computePosition()); f_addPosition(v_positionTable, c_compNodeC, f_computePosition()); f_addPosition(v_positionTable, c_compNodeD, f_computePosition()); p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA)); p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB)); p_nodeC.start(f_initialiseComponent(v_positionTable, c_compNodeC)); p_nodeD.start(f_initialiseComponent(v_positionTable, c_compNodeD)); p_nodeA.done; p_nodeB.done; p_nodeC.done; p_nodeD.done; } // end f_cf04Up /** * @desc Deletes configuration cf04 * @param p_nodeA * @param p_nodeB * @param p_nodeC * @param p_nodeD */ function f_cf04Down(in ItsNt p_nodeA, in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc { // Map unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeC:geoNetworkingPort, system:geoNetworkingPort); unmap(p_nodeD:geoNetworkingPort, system:geoNetworkingPort); // Connect disconnect(p_nodeA:syncPort, self:syncPort); disconnect(p_nodeB:syncPort, self:syncPort); disconnect(p_nodeC:syncPort, self:syncPort); disconnect(p_nodeD:syncPort, self:syncPort); } // end f_cf04Down function f_initialiseComponent( in PositionTable p_positionTable, in charstring p_componentName) runs on ItsNt { vc_positionTable := p_positionTable; vc_componentName := p_componentName; } // end f_initialiseComponent } // end geoConfigurationFunctions group geoPositionFunctions { function f_addPosition( inout PositionTable p_positionTable, in charstring p_positionKey, in LongPosVector p_positionValue) { // TODO } function f_getPosition( in PositionTable p_positionTable, in charstring p_positionKey) return LongPosVector { var LongPosVector v_return; // TODO return v_return; } function f_computePosition() return LongPosVector { var LongPosVector v_return; // TODO return v_return; } } // end geoPositionFunctions group geoAltsteps { /** * @desc The base default. */ altstep a_default() runs on ItsNt { var LongPosVector v_iutLongPosVector; [] a_receiveLsRequest( ?, ?, ?, v_iutLongPosVector ) { repeat; } [] geoNetworkingPort.receive { setverdict (inconc, "Received an unexpected message"); setverdict (inconc, "*** INCONC: Received an unexpected message ***"); //TODO shall stop be called here? stop; } [] tc_wait.timeout { setverdict (inconc, "Timeout while awaiting reaction of the IUT prior to Upper Tester action"); setverdict (inconc, "*** INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); //TODO shall stop be called here? stop; } [] tc_ac.timeout { setverdict (inconc, "Timeout while awaiting the reception of a message"); setverdict (inconc, "*** INCONC: Timeout while awaiting the reception of a message ***"); //TODO shall stop be called here? stop; } [] a_shutdown { f_poDefault(); log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } altstep a_neighbourDefault() runs on ItsNt { [] a_receiveLsRequestAndReply( ?, ?, f_getPosition(vc_positionTable, vc_componentName).gnAddr, f_getPosition(vc_positionTable, vc_componentName), f_getPosition(vc_positionTable, vc_componentName), e_vehicleStation ) { repeat; } [] a_shutdown { f_poNeighbour(); log("*** a_neighbourDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } [] a_default() { } } group geoGeoUnicastAltsteps { Loading Loading @@ -190,13 +495,24 @@ module LibItsGeoNetworking_Functions { activate(a_default()); } function f_prNonNeighbour() runs on ItsNt { f_prDefault(); } function f_prNeighbour() runs on ItsNt { activate(a_neighbourDefault()); f_taStartBeaconing( m_beaconHeader( f_getPosition(vc_positionTable, vc_componentName) ) ); } /** * @desc Brings the IUT into an initial state. * @return */ function f_prInitialState() runs on ItsNt { f_prDefault(); function f_prInitialState() { // TODO: any specific action ? Loading Loading @@ -279,6 +595,12 @@ module LibItsGeoNetworking_Functions { function f_poDefault() runs on ItsNt { setverdict(pass); } function f_poNeighbour() runs on ItsNt { f_taStopBeaconing(vc_componentName); f_poDefault(); } } // end postambles group upperTester { Loading Loading @@ -309,7 +631,7 @@ module LibItsGeoNetworking_Functions { } function f_taStopBeaconing() { function f_taStopBeaconing(in charstring p_compName) { //TODO Loading Loading @@ -360,7 +682,7 @@ module LibItsGeoNetworking_Functions { group testerFunctions { function f_sendGeoNetMessage(in GeoNetworkingReq p_geoNetReq) runs on ItsNt { function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsNt { geoNetworkingPort.send(p_geoNetReq); if (not (ischosen(p_geoNetReq.msgOut.header.shbHeader) or ischosen(p_geoNetReq.msgOut.header.beaconHeader))) { f_setLocalSequenceNumber(); Loading Loading @@ -475,6 +797,18 @@ module LibItsGeoNetworking_Functions { return v_itsGnBeaconServiceMaxJitter; } /** * @desc Gets the Lifetime of a Location Table Entry. * @return */ function f_getLifetimeLocTE() return float { var float v_itsGnLifetimeLocTE := 20.0; //TODO get the value from PIXIT or from the above calculation return v_itsGnLifetimeLocTE; } // end f_getLifetimeLocTE } // end iutFunctions group neighborFunctions { Loading
ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +8 −9 Original line number Diff line number Diff line Loading @@ -395,10 +395,10 @@ module LibItsGeoNetworking_Templates { } template Header mw_lsReplyHeader( template (present) StationTypeIdentifier p_stationType, template (present) UInt16 p_seqNumber, template (present) LongPosVector p_sourceLongPosVec, template (present) LongPosVector p_destinationLongPosVec) in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) LongPosVector p_sourceLongPosVec, in template (present) LongPosVector p_destinationLongPosVec) modifies mw_lsReplyHeaderAny := { lsReplyHeader := { srcPosVector := p_sourceLongPosVec, Loading @@ -419,8 +419,7 @@ module LibItsGeoNetworking_Templates { group beaconHeaderTemplates { template (value) Header m_beaconHeader( in template (value) LongPosVector p_senderLongPosVec, in template (value) StationTypeIdentifier p_stationType in template (value) LongPosVector p_senderLongPosVec ) := { beaconHeader := { commonHeader := m_commonHeader( Loading @@ -429,13 +428,13 @@ module LibItsGeoNetworking_Templates { m_trafficClass, c_defaultHopLimit, p_senderLongPosVec, p_stationType e_vehicleStation ) } } template Header mw_beaconHeader( in template (value) StationTypeIdentifier p_stationType in template (present) StationTypeIdentifier p_stationType ) := { beaconHeader := { commonHeader := mw_commonHeader( Loading Loading @@ -481,7 +480,7 @@ module LibItsGeoNetworking_Templates { } template Header mw_shbHeader( in template (value) StationTypeIdentifier p_stationType in template (present) StationTypeIdentifier p_stationType ) := { shbHeader := { commonHeader := mw_commonHeader( Loading
ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +21 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,27 @@ module LibItsGeoNetworking_TypesAndValues { import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; group geoConfigurationValues { const charstring c_compIut := "IUT"; const charstring c_compNodeA := "NodeA"; const charstring c_compNodeB := "NodeB"; const charstring c_compNodeC := "NodeC"; const charstring c_compNodeD := "NodeD"; } // end geoConfigurationValues group geoConfigurationTypes { type record PositionEntry { charstring key, LongPosVector position } type record of PositionEntry PositionTable; } // end geoConfigurationTypes group geoNwValues { group geoNwHeaderConstants { Loading
ttcn/LibIts_Interface.ttcn +4 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ module LibIts_Interface { // LibCommon import from LibCommon_Time {modulepar all;} import from LibCommon_Sync all; group adapterInterface { Loading @@ -39,7 +40,7 @@ module LibIts_Interface { group adapterComponent { type component ItsAdapterComponent { type component ItsAdapterComponent extends ClientSyncComp { // Adapter ports port UpperTesterPort utPort; Loading Loading @@ -122,6 +123,8 @@ module LibIts_Interface { //variables var UInt16 vc_localSeqNumber := 0; var PositionTable vc_positionTable := {}; var charstring vc_componentName := ""; } // end ItsNt Loading
ttcn/LibIts_TestSystem.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -12,13 +12,14 @@ module LibIts_TestSystem { // LibCommon import from LibCommon_Time {modulepar all}; import from LibCommon_Sync all; group componentDefinitions { /** * @desc ITS Main Test Component */ type component ItsMtc { type component ItsMtc extends ServerSyncComp { // timers timer tc_guard := PX_TDONE; Loading