2017-01-13 10:16:04 +00:00
|
|
|
/**
|
2017-01-16 09:24:51 +00:00
|
|
|
* @author ETSI / STF519
|
|
|
|
* @version $URL:$
|
|
|
|
* $Id:$
|
|
|
|
* @desc This module provides functions used in S1AP.
|
|
|
|
* @copyright ETSI Copyright Notification
|
|
|
|
* No part may be reproduced except as authorized by written permission.
|
|
|
|
* The copyright and the foregoing restriction extend to reproduction in all media.
|
|
|
|
* All rights reserved.
|
|
|
|
* @see ETSI TS 136 413 / 3GPP TS 36.413 version 13.4.0 Release 13
|
2017-01-13 10:16:04 +00:00
|
|
|
*/
|
2017-01-16 09:24:51 +00:00
|
|
|
module LibS1AP_Steps {
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
// LibCommon
|
2017-01-13 10:16:04 +00:00
|
|
|
import from LibCommon_Sync all;
|
2017-01-16 09:24:51 +00:00
|
|
|
import from LibCommon_VerdictControl all;
|
|
|
|
import from LibCommon_BasicTypesAndValues all;
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
// LibS1AP
|
2017-01-13 10:16:04 +00:00
|
|
|
import from S1AP_PDU_Descriptions language "ASN.1:1997" all;
|
2017-01-20 19:47:50 +00:00
|
|
|
import from LibS1AP_TypesAndValues all;
|
2017-01-16 09:24:51 +00:00
|
|
|
import from LibS1AP_Interface all;
|
|
|
|
import from LibS1AP_Pixits all;
|
|
|
|
import from LibS1AP_Templates all;
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
/**
|
|
|
|
* @desc Common functions description
|
|
|
|
*/
|
|
|
|
group commonFunctions {
|
2017-01-13 10:16:04 +00:00
|
|
|
|
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Indicate if the provided value is greather or equal to 0
|
|
|
|
* @return true if value of p_int greater than 0
|
|
|
|
* @param p_int - integer value
|
|
|
|
*/
|
|
|
|
function f_gtZero( // FIXME Do we really need a function for <= mathematical operation???
|
2017-01-16 09:24:51 +00:00
|
|
|
in integer p_int
|
|
|
|
) return boolean {
|
2017-01-13 10:16:04 +00:00
|
|
|
if (p_int > 0){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
return false;
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_gtZero
|
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Increment the provided value by one
|
|
|
|
* @return incremented value of p_int 0
|
2017-01-16 09:24:51 +00:00
|
|
|
* @param p_int - integer value
|
|
|
|
*/
|
|
|
|
function f_inc(
|
|
|
|
inout UInt32 p_int
|
|
|
|
) return UInt32 {
|
2017-01-18 11:32:36 +00:00
|
|
|
p_int := p_int + 1;
|
2017-01-13 10:16:04 +00:00
|
|
|
return p_int;
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_inc
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group commonFunctions
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
/**
|
|
|
|
* @desc Receive functions description
|
|
|
|
*/
|
|
|
|
group receivePDU {
|
2017-01-16 09:24:51 +00:00
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
/**
|
2017-01-16 09:24:51 +00:00
|
|
|
* @desc This is a test step that assign common S1AP
|
2017-01-18 11:32:36 +00:00
|
|
|
* @param p_PDU Extract the message payload from the S1AP PDU
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_S1APPDU_Get(
|
|
|
|
inout S1AP_PDU p_PDU
|
|
|
|
) runs on S1APComponent {
|
|
|
|
|
|
|
|
vc_recvS1AP_PDU := p_PDU;
|
|
|
|
|
|
|
|
if (ischosen(p_PDU.initiatingMessage)) {
|
|
|
|
//TODO...
|
|
|
|
}
|
|
|
|
if (ischosen(p_PDU.successfulOutcome)) {
|
|
|
|
//TODO...
|
|
|
|
}
|
|
|
|
if (ischosen(p_PDU.unsuccessfulOutcome)) {
|
|
|
|
//TODO...
|
|
|
|
}
|
|
|
|
} // End of function f_S1APPDU_Get
|
|
|
|
|
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Receive S1AP PDU from protocol port
|
2017-01-16 09:24:51 +00:00
|
|
|
* @param p_PDU template of the message to be received
|
|
|
|
*/
|
|
|
|
function f_recv_S1AP_PDU(
|
|
|
|
in template S1AP_PDU p_PDU
|
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
var S1AP_PDU v_PDU;
|
2017-01-16 09:24:51 +00:00
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
tc_wait.start;
|
2017-01-16 09:24:51 +00:00
|
|
|
alt {
|
|
|
|
[] S1_MMEeNB_P.receive(p_PDU) -> value v_PDU {
|
2017-01-13 10:16:04 +00:00
|
|
|
tc_wait.stop;
|
2017-01-16 09:24:51 +00:00
|
|
|
f_S1APPDU_Get(v_PDU)
|
|
|
|
}
|
2017-01-13 10:16:04 +00:00
|
|
|
[] tc_wait.timeout {
|
|
|
|
setverdict(inconc,"*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
|
2017-01-16 09:24:51 +00:00
|
|
|
//Stop the component in case of timeout
|
2017-01-13 10:16:04 +00:00
|
|
|
all timer.stop;
|
|
|
|
f_componentStop();
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // End of function f_recv_S1AP_PDU
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Receive S1AP PDU with InitiatingMessage payload from protocol port
|
|
|
|
* @param p_initiatingMessage Receive template for InitiatingMessage message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_recv_S1AP_initiatingMessage(
|
2017-01-18 11:32:36 +00:00
|
|
|
template (present) InitiatingMessage p_initiatingMessage := ?
|
2017-01-16 09:24:51 +00:00
|
|
|
) runs on S1APComponent {
|
2017-01-18 11:32:36 +00:00
|
|
|
f_recv_S1AP_PDU( { initiatingMessage := p_initiatingMessage })
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_recv_S1AP_initiatingMessage
|
|
|
|
|
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Receive S1AP PDU with SuccessfulOutcome payload from protocol port
|
|
|
|
* @param p_successfulOutcome Receive template for SuccessfulOutcome message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_recv_S1AP_successfulOutcome(
|
2017-01-18 11:32:36 +00:00
|
|
|
template (present) SuccessfulOutcome p_successfulOutcome := ?
|
2017-01-16 09:24:51 +00:00
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_recv_S1AP_PDU( {successfulOutcome := p_successfulOutcome})
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of f_recv_S1AP_successfulOutcome
|
|
|
|
|
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Receive S1AP PDU with UnsuccessfulOutcome payload from protocol port
|
|
|
|
* @param p_unsuccessfulOutcome Receive template for UnsuccessfulOutcome message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_recv_S1AP_unsuccessfulOutcome(
|
2017-01-18 11:32:36 +00:00
|
|
|
template (present) UnsuccessfulOutcome p_unsuccessfulOutcome := ?
|
2017-01-16 09:24:51 +00:00
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_recv_S1AP_PDU( {unsuccessfulOutcome := p_unsuccessfulOutcome})
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_recv_S1AP_unsuccessfulOutcome
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-20 19:47:50 +00:00
|
|
|
/**
|
|
|
|
* @desc Receive S1AP Message E_RABSetupResponse
|
|
|
|
* @param p_value Receive template for E_RABSetupResponse IEs
|
|
|
|
*/
|
|
|
|
function f_recv_E_RABSetupResponse( template (present) RecordOf_ProtocolIE p_value :=?
|
|
|
|
) runs on S1APComponent {
|
|
|
|
f_recv_S1AP_successfulOutcome(mw_E_RABSetupResponse(p_value))
|
|
|
|
} // End of f_recv_E_RABSetupResponse
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group receivePDU
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
/**
|
|
|
|
* @desc Send functions description
|
|
|
|
*/
|
|
|
|
group sendPDU {
|
2017-01-16 09:24:51 +00:00
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
/**
|
2017-01-16 09:24:51 +00:00
|
|
|
* @desc This is a test step that assign common S1AP
|
2017-01-18 11:32:36 +00:00
|
|
|
* @param p_PDU The S1AP protocol message to set up
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_S1APPDU_Set(
|
|
|
|
inout template (value) S1AP_PDU p_PDU
|
|
|
|
) runs on S1APComponent {
|
|
|
|
|
|
|
|
if (ischosen(p_PDU.initiatingMessage)) {
|
2017-01-13 10:16:04 +00:00
|
|
|
//TODO...
|
|
|
|
vc_sendS1AP_PDU:=valueof(p_PDU);
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
if (ischosen(p_PDU.successfulOutcome)) {
|
2017-01-13 10:16:04 +00:00
|
|
|
//TODO...
|
|
|
|
vc_sendS1AP_PDU:=valueof(p_PDU);
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
if (ischosen(p_PDU.unsuccessfulOutcome)) {
|
2017-01-13 10:16:04 +00:00
|
|
|
//TODO...
|
|
|
|
vc_sendS1AP_PDU:=valueof(p_PDU);
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
|
|
|
|
} // End of function f_S1APPDU_Set
|
2017-01-18 11:32:36 +00:00
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Send S1AP PDU to protocol port
|
|
|
|
* @param p_PDU template value message to be send
|
|
|
|
*/
|
2017-01-16 09:24:51 +00:00
|
|
|
function f_send_S1AP_PDU(
|
|
|
|
in template (value) S1AP_PDU p_PDU
|
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_S1APPDU_Set(p_PDU);
|
|
|
|
S1_MMEeNB_P.send(p_PDU);
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_send_S1APPDU
|
|
|
|
|
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Send S1AP PDU with InitiatingMessage payload from protocol port
|
|
|
|
* @param p_initiatingMessage Send value template for InitiatingMessage message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_send_S1AP_initiatingMessage(
|
|
|
|
in template (value) InitiatingMessage p_initiatingMessage
|
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_send_S1AP_PDU( {initiatingMessage := p_initiatingMessage})
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_send_S1AP_initiatingMessage
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Send S1AP PDU with SuccessfulOutcome payload from protocol port
|
|
|
|
* @param p_successfulOutcome Send value template for SuccessfulOutcome message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_send_S1AP_successfulOutcome(
|
|
|
|
in template (value) SuccessfulOutcome p_successfulOutcome
|
2017-01-18 11:32:36 +00:00
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_send_S1AP_PDU( {successfulOutcome := p_successfulOutcome})
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_send_S1AP_successfulOutcome
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
/**
|
2017-01-18 11:32:36 +00:00
|
|
|
* @desc Send S1AP PDU with UnsuccessfulOutcome payload from protocol port
|
|
|
|
* @param p_unsuccessfulOutcome Send value template for UnsuccessfulOutcome message
|
2017-01-16 09:24:51 +00:00
|
|
|
*/
|
|
|
|
function f_send_S1AP_unsuccessfulOutcome(
|
2017-01-18 11:32:36 +00:00
|
|
|
in template (value) UnsuccessfulOutcome p_unsuccessfulOutcome
|
|
|
|
) runs on S1APComponent {
|
2017-01-13 10:16:04 +00:00
|
|
|
f_send_S1AP_PDU( {unsuccessfulOutcome := p_unsuccessfulOutcome})
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_send_S1AP_unsuccessfulOutcome
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-20 19:47:50 +00:00
|
|
|
/**
|
|
|
|
* @desc Send S1AP Message E-RAB_SetupRequest
|
|
|
|
* @param p_value Send template with IE for E-RAB_SetupRequest
|
|
|
|
*/
|
|
|
|
function f_send_E_RABSetupRequest(in template (value) RecordOf_ProtocolIE p_value
|
|
|
|
) runs on S1APComponent {
|
|
|
|
f_send_S1AP_initiatingMessage(m_E_RABSetupRequest(p_value))
|
|
|
|
} // End of function f_send_E_RABSetupRequest
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group sendPDU
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
group preambles {
|
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
group preamble_S1AP{
|
2017-01-16 09:24:51 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc
|
|
|
|
* @verdict
|
|
|
|
*/
|
2017-01-13 10:16:04 +00:00
|
|
|
function f_preambleS1AP_MME()
|
|
|
|
runs on S1APComponent {
|
|
|
|
//TODO:...
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_preambleS1AP_MME
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
/**
|
|
|
|
* @desc
|
|
|
|
* @verdict
|
|
|
|
*/
|
2017-01-13 10:16:04 +00:00
|
|
|
function f_preambleS1AP_eNB()
|
|
|
|
runs on S1APComponent {
|
|
|
|
//TODO:...
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of function f_preambleS1AP_eNB
|
|
|
|
|
|
|
|
} // End of group preamble_S1AP
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group preambles
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
group postambles {
|
2017-01-16 09:24:51 +00:00
|
|
|
|
2017-01-13 10:16:04 +00:00
|
|
|
group postamble_S1AP{
|
2017-01-16 09:24:51 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc
|
|
|
|
* @verdict
|
|
|
|
*/
|
2017-01-13 10:16:04 +00:00
|
|
|
function f_postambleS1AP_MME()
|
|
|
|
runs on S1APComponent {
|
2017-01-16 09:24:51 +00:00
|
|
|
// TODO:...
|
|
|
|
} // End of function f_postambleS1AP_MME
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc
|
|
|
|
* @verdict
|
|
|
|
*/
|
2017-01-13 10:16:04 +00:00
|
|
|
function f_postambleS1AP_eNB()
|
|
|
|
runs on S1APComponent {
|
2017-01-16 09:24:51 +00:00
|
|
|
// TODO:...
|
|
|
|
} // End of function f_postambleS1AP_eNB
|
|
|
|
|
|
|
|
} // End of group postamble_S1AP
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group postambles
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc Global 'altstep' statements description
|
|
|
|
*/
|
|
|
|
group globalSteps {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc This is a test step that init S1AP component
|
|
|
|
*/
|
|
|
|
function f_S1AP_Init_Component()
|
|
|
|
runs on S1APComponent {
|
|
|
|
|
|
|
|
} // End of function f_S1AP_Init_Component
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc Component termination
|
|
|
|
*/
|
|
|
|
function f_S1AP_terminate_component()
|
|
|
|
runs on S1APComponent {
|
|
|
|
|
|
|
|
log("component terminated - forced!");
|
|
|
|
deactivate;
|
|
|
|
stop;
|
|
|
|
} // End of function f_S1AP_terminate_component
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc Component termination
|
|
|
|
*/
|
|
|
|
function f_componentStop()
|
|
|
|
runs on S1APComponent {
|
|
|
|
|
|
|
|
syncPort.send(m_syncClientStop);
|
|
|
|
S1_MMEeNB_P.clear;
|
|
|
|
stop;
|
|
|
|
} // End of function f_componentStop
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc Original copied from older LibCommon_VerdictControl
|
|
|
|
*/
|
|
|
|
function f_getVerdict() // FIXME Are you sure we really need it???
|
|
|
|
return FncRetCode {
|
|
|
|
|
|
|
|
var FncRetCode v_ret := e_error;
|
|
|
|
if (getverdict == pass or getverdict == none) {
|
|
|
|
v_ret := e_success;
|
|
|
|
}
|
|
|
|
return v_ret;
|
|
|
|
} // End of function
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @desc Wait for particular time before next expected message
|
|
|
|
*/
|
|
|
|
function f_wait(float p_time) // FIXME To be replace by LibCommon.f_sleep!!!
|
|
|
|
runs on S1APComponent {
|
|
|
|
|
|
|
|
tc_wait.start(p_time);
|
|
|
|
alt {
|
|
|
|
[] tc_wait.timeout{ }
|
|
|
|
}
|
|
|
|
} // End of function f_wait
|
|
|
|
|
|
|
|
} // End of group globalSteps
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
/**
|
|
|
|
* @desc Default 'altstep' statements description
|
|
|
|
*/
|
|
|
|
group defaultsTestStep {
|
2017-01-16 09:24:51 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @desc
|
|
|
|
* @verdict
|
|
|
|
*/
|
2017-01-13 10:16:04 +00:00
|
|
|
altstep a_defaultS1AP()
|
2017-01-16 09:24:51 +00:00
|
|
|
runs on S1APComponent {
|
|
|
|
[] any timer.timeout {
|
|
|
|
all timer.stop;
|
|
|
|
if (vc_serverStop==false) {
|
|
|
|
f_selfOrClientSyncAndVerdict("error", e_timeout);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
stop;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
[] S1_MMEeNB_P.receive (S1AP_PDU:{initiatingMessage := ?}) -> value vc_recvS1AP_PDUDefault {
|
|
|
|
repeat;
|
|
|
|
}
|
|
|
|
[] S1_MMEeNB_P.receive (S1AP_PDU:{successfulOutcome := ?}) -> value vc_recvS1AP_PDUDefault {
|
|
|
|
repeat;
|
|
|
|
}
|
|
|
|
[] S1_MMEeNB_P.receive (S1AP_PDU:{unsuccessfulOutcome := ?}) -> value vc_recvS1AP_PDUDefault {
|
|
|
|
repeat;
|
|
|
|
}
|
|
|
|
[] S1_MMEeNB_P.receive (S1AP_PDU:?) -> value vc_recvS1AP_PDUDefault {
|
|
|
|
if (vc_serverStop==false) {
|
|
|
|
f_selfOrClientSyncAndVerdict("error", e_error);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
stop;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
[] S1_MMEeNB_P.receive {
|
|
|
|
if (vc_serverStop==false) {
|
|
|
|
f_selfOrClientSyncAndVerdict("error", e_error);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
stop;
|
|
|
|
}
|
|
|
|
}
|
2017-01-13 10:16:04 +00:00
|
|
|
[] a_shutdown() {
|
|
|
|
// Process temination on error
|
|
|
|
log("*** a_defaultS1AP() : Process temination on error ***");
|
|
|
|
// Terminate component execution
|
|
|
|
stop;
|
|
|
|
}
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of altstep a_defaultS1AP
|
2017-01-13 10:16:04 +00:00
|
|
|
|
|
|
|
altstep a_defaultS1AP_MME()
|
2017-01-16 09:24:51 +00:00
|
|
|
runs on S1APComponent {
|
|
|
|
[] any timer.timeout {
|
|
|
|
all timer.stop;
|
|
|
|
if (vc_serverStop==false) {
|
|
|
|
f_selfOrClientSyncAndVerdict("error", e_timeout);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
stop;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//TODO:...
|
|
|
|
} // End of altstep a_defaultS1AP_MME
|
2017-01-13 10:16:04 +00:00
|
|
|
|
|
|
|
altstep a_defaultS1AP_eNB()
|
2017-01-16 09:24:51 +00:00
|
|
|
runs on S1APComponent {
|
|
|
|
[] any timer.timeout {
|
|
|
|
all timer.stop;
|
|
|
|
if (vc_serverStop==false) {
|
|
|
|
f_selfOrClientSyncAndVerdict("error", e_timeout);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
stop;
|
|
|
|
}
|
|
|
|
}
|
2017-01-13 10:16:04 +00:00
|
|
|
//TODO:...
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of altstep a_defaultS1AP_eNB
|
|
|
|
|
2017-01-18 11:32:36 +00:00
|
|
|
} // End of group defaultsTestStep
|
2017-01-13 10:16:04 +00:00
|
|
|
|
2017-01-16 09:24:51 +00:00
|
|
|
} // End of module LibS1AP_Steps
|