Newer
Older
/**
* @author ETSI / STF405 / STF449
* @version $URL$
* $Id$
* @desc GeoNetworking TP Functions
*
*/
module ItsGeoNetworking_TpFunctions {
// Libcommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_DataStrings all;
import from LibCommon_Time all;
import from LibCommon_VerdictControl all;
import from LibCommon_Sync all;
import from LibItsCommon_Functions all;
import from LibItsGeoNetworking_TestSystem all;
import from LibItsGeoNetworking_Functions all;
import from LibItsGeoNetworking_Templates all;
import from LibItsGeoNetworking_TypesAndValues all;
import from LibItsGeoNetworking_Pics all;
import from LibItsGeoNetworking_Pixits all;
// 6.2.1
group geoFormatingAndDataValidity {
// 6.2.1.1
group geoFdvBasicHeader {
/**
* @desc TP Function for TC_GEONW_FDV_BAH_BV_01
*/
function f_GEONW_FDV_BAH_BV_01() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB;
// Test control
if (not PICS_GN_BASIC_HEADER) {
log("*** " & testcasename() & ": PICS_GN_BASIC_HEADER required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf01Up();
v_longPosVectorNodeB := f_getPosition(vc_componentName);
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(?, ?), -, f_getDefaultHopLimit()))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Basic Header correctly formatted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poNeighbour();
f_cf01Down();
} // end f_GEONW_FDV_BAH_BV_01
/**
* @desc TP Function for TC_GEONW_FDV_BAH_BI_02
*/
function f_GEONW_FDV_BAH_BI_02() 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_BASIC_HEADER) {
log("*** " & testcasename() & ": PICS_GN_BASIC_HEADER required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf01Up();
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Test adapter configuration
// Preamble
f_prNeighbour();
v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
f_sleep(PX_TAC);
if(0 < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
//flush received upper indications
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
// Test Body
v_gnPacket.basicHeader.version := valueof(v_gnPacket.basicHeader.version) + 1;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was discarded and not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
f_poNeighbour();
f_cf01Down();
} // end f_GEONW_FDV_BAH_BI_02
} // end geoFdvBasicHeader
// 6.2.1.2
group geoFdvCommonHeader {
/**
* @desc TP Function for TC_GEONW_FDV_COH_BV_01
*/
function f_GEONW_FDV_COH_BV_01() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut;
// Test control
if (not PICS_GN_COMMON_HEADER) {
log("*** " & testcasename() & ": PICS_GN_COMMON_HEADER required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf01Up();
v_longPosVectorIut := f_getPosition(c_compIut);
// Test adapter configuration
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(?)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Common Header correclty formatted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
f_acTriggerEvent(m_stopPassBeaconing);
// Postamble
f_poNeighbour();
f_cf01Down();
} // end f_GEONW_FDV_COH_BV_01
/**
Loading full blame...