Newer
Older
/**
* @author ETSI / STF405
* @version $URL$
* $Id$
* @desc Module containing functions for basic Transport Protocol
*
*/
// LibCommon
import from LibCommon_Sync all;
// LibIts
import from LibIts_Interface all;
import from LibItsBtp_TypesAndValues all;
group configurationFunctions {
/**
* @desc Setups default configuration
*/
function f_cfUp() runs on ItsNt {
map(self:utPort, system:utPort);
map(self:btpPort, system:btpPort);
f_connect4SelfOrClientSync();
} // end f_cfUp
/**
* @desc Deletes default configuration
*/
function f_cfDown() runs on ItsNt {
unmap(self:utPort, system:utPort);
unmap(self:btpPort, system:btpPort);
f_disconnect4SelfOrClientSync();
} // end f_cfDown
} // end configurationFunctions
group btpAltsteps {
/**
* @desc The base default.
*/
altstep a_default() runs on ItsNt {
[] btpPort.receive {
f_selfOrClientSyncAndVerdict("error", e_error, "*** a_default: Received an unexpected message ***");
}
[] tc_wait.timeout {
f_selfOrClientSyncAndVerdict("error", e_timeout, "*** a_default: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***");
}
[] tc_ac.timeout {
f_selfOrClientSyncAndVerdict("error", e_timeout, "*** a_default: Timeout while awaiting the reception of a message ***");
}
[] a_shutdown() {
f_poDefault();
f_cfDown();
log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
stop;
}
}
} //end btpAltsteps
/**
* @desc The default preamble.
*/
function f_prDefault() runs on ItsNt {
activate(a_default());
}
group postambles {
/**
* @desc The default postamble.
*/
function f_poDefault() runs on ItsNt {
//empty
}
} // end postambles
/**
* @desc Requests to bring the IUT in an initial state
*/
alt {
[] utPort.receive(UtBtpResult:true) {
log("*** f_utInitializeIut: INFO: IUT initialized ***");
f_selfOrClientSyncAndVerdict("error", e_error, "*** IUT could not be initialized ***");
f_selfOrClientSyncAndVerdict("error", e_timeout, "*** IUT could not be initialized in time ***");
/**
* @desc Triggers event from the application layer
* @param p_event The event to trigger.
* @return
*/
function f_utTriggerEvent(template (value) UtBtpEvent p_event) runs on ItsNt return FncRetCode {
var FncRetCode v_ret := e_success;
var template (value) UtBtpTrigger v_utMsg := { p_event };
}
/**
* @desc Checks that the event was indicated at the application layer
* @param p_event The event to check.
* @param p_discard The event should not appear. Default value: FALSE.
function f_utCheckEvent(template (value) UtBtpEvent p_event, boolean p_discard := false) runs on ItsNt {
var template (value) UtBtpCheck v_utMsg := { p_event };
utPort.send(v_utMsg);
alt {
[] utPort.receive(UtBtpResult:true) {
if (p_discard == false) {
log("*** f_utCheckEvent: Event correctly indicated at application layer ***");
}
else {
f_selfOrClientSyncAndVerdict("error", e_error, "*** f_utCheckEvent: Event indicated at application layer where it should be discarded ***");
}
if (p_discard == false) {
f_selfOrClientSyncAndVerdict("error", e_error, "*** f_utCheckEvent: Event not correctly indicated at application layer ***");
}
else {
log("*** f_utCheckEvent: Another event indicated at application layer, repeating check ***");
repeat;
}
if (p_discard == false) {
f_selfOrClientSyncAndVerdict("error", e_timeout, "*** f_utCheckEvent: Timeout while waiting for event check result ***");
}
else {
log("*** f_utCheckEvent: Event not indicated at application layer ***");
}