Newer
Older
} // end gbcAreaAdvancedForwarding
} // end gbcAreaForwarding
} // end geoGeoBroadcast
// 6.2.2.10
group geoTopologicallyScopedBroadcast {
* @desc TP Function for TC_GEONW_PON_TSB_BV_01
function f_GEONW_PON_TSB_BV_01() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
if (not PICS_GN_TSB_SRC) {
log("*** " & testcasename() & ": PICS_GN_TSB_SRC required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BV_01_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BV_01_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BV_01)
function f_GEONW_PON_TSB_BV_01_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateTsbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(?, mw_longPosVectorPosition(v_longPosVectorIut))
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BV_01)
function f_GEONW_PON_TSB_BV_01_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(?, mw_longPosVectorPosition(v_longPosVectorIut))
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
* @desc TP Function for TC_GEONW_PON_TSB_BV_02
function f_GEONW_PON_TSB_BV_02() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
if (not PICS_GN_TSB_FWD) {
log("*** " & testcasename() & ": PICS_GN_TSB_FWD required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BV_02_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BV_02_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BV_02)
function f_GEONW_PON_TSB_BV_02_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB
),
-,
c_defaultHopLimit
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) {
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BV_02)
function f_GEONW_PON_TSB_BV_02_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
* @desc TP Function for TC_GEONW_PON_TSB_BV_03
function f_GEONW_PON_TSB_BV_03() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
// Test control
if (not PICS_GN_TSB_FWD) {
log("*** " & testcasename() & ": PICS_GN_TSB_FWD required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BV_03_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BV_03_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BV_03)
function f_GEONW_PON_TSB_BV_03_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB,
c_defaultHopLimit
),
-,
c_defaultHopLimit
)
)
);
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
),
-,
c_defaultHopLimit - 1
)
)
) {
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
),
-,
?
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet received with incorrect HopLimit ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BV_03)
function f_GEONW_PON_TSB_BV_03_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacketWithHl(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB),
c_defaultHopLimit
),
-,
c_defaultHopLimit - 1
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
),
-,
?
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet received with incorrect HopLimit ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poNeighbour();
} // end GEONW_PON_TSB_BV_03
group GEONW_PON_TSB_BO_04 {
* @desc TP Function for TC_GEONW_PON_TSB_BO_04
function f_GEONW_PON_TSB_BO_04() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
// Test control
if (not PICS_GN_TSB_FWD) {
log("*** " & testcasename() & ": PICS_GN_TSB_FWD required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BO_04_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BO_04_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BO_04)
function f_GEONW_PON_TSB_BO_04_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB
),
-,
1
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BO_04)
function f_GEONW_PON_TSB_BO_04_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: TSB message was re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: TSB message was not re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
} // end GEONW_PON_TSB_BO_04
/**
* @desc TP Function for TC_GEONW_PON_TSB_BV_05
*/
function f_GEONW_PON_TSB_BV_05() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB;
var template (value) GeoNetworkingPdu v_gnPacket;
var integer i;
var GnRawPayload v_sentRawPayload;
// Test control
if (not PICS_GN_TSB_DST) {
log("*** " & testcasename() & ": PICS_GN_TSB_DST required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf01Up();
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Test adapter configuration
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB
)
);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
f_sleep(PX_TAC);
v_sentRawPayload := f_adaptPayloadForUtInd_m(v_gnPacket.gnPacket.packet.payload);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_sentRawPayload); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
log("*** " & testcasename() & ": TSB packet passed to Upper Layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
f_cf01Down();
} // end f_GEONW_PON_TSB_BV_05
group GEONW_PON_TSB_BO_07 {
* @desc TP Function for TC_GEONW_PON_TSB_BO_07
function f_GEONW_PON_TSB_BO_07() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
if (not PICS_GN_TSB_FWD) {
log("*** " & testcasename() & ": PICS_GN_TSB_FWD required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BO_07_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BO_07_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BO_07)
function f_GEONW_PON_TSB_BO_07_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
var template (present) GeoNetworkingPdu v_gnPacket;
// Preamble
f_prNeighbour();
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
v_gnPacket := m_geoNwPdu(
m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB
),
-,
c_defaultHopLimit
);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(valueof(v_gnPacket)));
v_gnPacket.basicHeader.routerHopLimit := ?;
tc_noac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) {
tc_noac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
[] tc_noac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
}
// Test Body
tc_noac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: The same TSB packet was re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: The same TSB packet was not re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BO_07)
function f_GEONW_PON_TSB_BO_07_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
var template (value) GeoNetworkingInd v_msgInd;
// Preamble
f_prNeighbour();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) -> value v_msgInd {
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) -1;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
tc_noac.start;
alt {
[] geoNetworkingPort.receive(v_msgInd) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: The same TSB packet was re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: The same TSB packet was not re-broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
* @desc TP Function for TC_GEONW_PON_TSB_BV_08
function f_GEONW_PON_TSB_BO_08() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeD;
if (not PICS_GN_TSB_DST) {
log("*** " & testcasename() & ": PICS_GN_TSB_DST required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_TSB_BO_08_nodeB());
v_nodeD.start(f_GEONW_PON_TSB_BO_08_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
* @desc Behavior function for NodeB (TC_GEONW_PON_TSB_BO_08)
function f_GEONW_PON_TSB_BO_08_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
var template (value) GeoNetworkingPdu v_gnPacket;
var integer i;
var GnRawPayload v_sentRawPayload;
// Preamble
f_prNeighbour();
v_gnPacket := m_geoNwPdu(m_geoNwTsbPacket(
vc_localSeqNumber,
v_longPosVectorNodeB
),
-,
c_defaultHopLimit
);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(valueof(v_gnPacket)));
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) {
f_sleep(PX_TAC);
v_sentRawPayload := f_adaptPayloadForUtInd_m(v_gnPacket.gnPacket.packet.payload);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_sentRawPayload); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly rebroadcasted and passed to Upper Layer ***");
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: TSB was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: TSB not rebroadcasted ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
f_sleep(PX_TAC);
v_sentRawPayload := f_adaptPayloadForUtInd_m(v_gnPacket.gnPacket.packet.payload);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_sentRawPayload); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: Same TSB packet was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: Same TSB packet was not passed to Upper Layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
f_poNeighbour();
* @desc Behavior function for NodeD (TC_GEONW_PON_TSB_BO_08)
function f_GEONW_PON_TSB_BO_08_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
var template (value) GeoNetworkingInd v_msgInd;
var integer i;
var template (value) GeoNetworkingPdu v_gnPacket;
// Preamble
f_prNeighbour();
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwTsbPacket(
?,
mw_longPosVectorPosition(v_longPosVectorNodeB)
)
)
)
) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly rebroadcasted ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: TSB not rebroadcasted ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
// Test Body
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_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
} // end GEONW_PON_TSB_BO_08
} // end geoTopologicallyScopedBroadcast
// 6.2.2.11
group geoSingleHopBroadcast {
* @desc TP Function for TC_GEONW_PON_SHB_BV_01
function f_GEONW_PON_SHB_BV_01() runs on ItsMtc {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeD;
// Test control
if (not PICS_GN_SHB_SRC) {
log("*** " & testcasename() & ": PICS_GN_SHB_SRC required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_SHB_BV_01_nodeB());
v_nodeD.start(f_GEONW_PON_SHB_BV_01_nodeD());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
* @desc Behavior function for NodeB (TC_GEONW_PON_SHB_BV_01)
function f_GEONW_PON_SHB_BV_01_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateShbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;