Loading ttcn/CALM/ATSP/LibItsAtsp_Functions.ttcn3 +220 −31 Original line number Diff line number Diff line Loading @@ -9,9 +9,10 @@ module LibItsAtsp_Functions { import from LibCommon_Sync all; import from CALMllsap language "ASN.1:1997" { type UserPriority, UserPriority, VCIserialNumber, EUI64, LLserviceAddr, INdata, IN_SAPaddress, CIstatus, Link_ID, MedType, Errors CIstatus, Link_ID, MedType, Errors, I_Param, I_ParamNo, MedID }; import from CALMmsap language "ASN.1:1997" { Loading @@ -22,6 +23,11 @@ module LibItsAtsp_Functions { CommandRef }; import from CALMmanagement language "ASN.1:1997" { type ITS_scuId }; import from LibItsCalm_Interface { type ItsCalm Loading Loading @@ -49,6 +55,7 @@ module LibItsAtsp_Functions { import from LibItsMgt_Functions { function f_getNextCommandRef }; import from LibCommon_BasicTypesAndValues all; group preambles { Loading Loading @@ -78,7 +85,7 @@ module LibItsAtsp_Functions { v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); } // check again CI status after activation of IUT if( (v_CIstatus != c_ciStatusActive)) if( v_CIstatus != c_ciStatusActive) { log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error Loading @@ -93,6 +100,35 @@ module LibItsAtsp_Functions { // End of function f_initialCIstateActive /** * @desc Checks whether the IUT is in the initial CI state "active" or connected. */ function f_initialCIstateActiveConnected() runs on ItsCalm return CIstatus { var CIstatus v_CIstatus; // CI status has to be "active" v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) // wrong status { // Request operator to switch on the SUT or to activate the IUT action("Switch on SUT or activate IUT"); v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); } // check again CI status after activation of IUT if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) { log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error stop; } else { log("*** f_initialCIstateActive: Allowed initial CI status returned ***", v_CIstatus); } return v_CIstatus } // End of function f_initialCIstateActiveConnected /** * @desc Checks whether the IUT is in an operational initial CI state * i.e. not in "not-existent", "existent", "unknown". */ Loading Loading @@ -727,6 +763,95 @@ module LibItsAtsp_Functions { } }// End of function f_utSendIN_UNITDATA_Request /** * @desc Check proper executing of MI-SET.command for a single I-Parameter * @param p_cfSetErrorList Error list returned in MI-SET.confirm * @return Boolean: TRUE = success */ function f_cnCheckOneIparamSetSuccess( in I_ParamNo p_IparmNo, in Errors p_cfSetErrorList ) runs on ItsCalm return boolean { //local variable(s) var boolean v_returnValue; if(lengthof(p_cfSetErrorList) == 0){ // no error occured v_returnValue := true; } else if(lengthof(p_cfSetErrorList) == 1){ // correct number or error statuses reported if(p_cfSetErrorList[0].paramNo == p_IparmNo) { // report for correct parameter if (p_cfSetErrorList[0].errStatus == c_ciErrStatusSuccess) { // success reported v_returnValue := true; } else { // Error reported log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter. Error code: ", p_cfSetErrorList[0].errStatus, " ***"); v_returnValue := false; } } else { // Report for incorrect parameter log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: wrong I-ParamNo: ", p_cfSetErrorList[0].paramNo, " ***"); v_returnValue := false; } } else { // Incorrect size of Error list log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_cfSetErrorList), " ***"); v_returnValue := false; } return v_returnValue; }// End of function f_cnCheckOneIparamSetSuccess /** * @desc Check proper executing of MI-GET.command for a single I-Parameter * @param p_returnedValues Value list returned in MI-GET.confirm * @return Boolean: TRUE = success */ function f_cnCheckOneIparamGetSuccess( in I_ParamNo p_IparmNo, in IParamList p_IparameterList, out I_Param p_Iparam ) runs on ItsCalm return boolean { //local variable(s) var boolean v_returnValue; if(lengthof(p_IparameterList) == 1){ // correct number or returned values if(p_IparameterList[0].paramNo == p_IparmNo) { // correct parameter returned p_Iparam := p_IparameterList[0]; log("*** f_cnCheckOneIparamGetSuccess: INFO: reading I-Parameter: ", p_IparmNo, " was correctly done: ", p_IparameterList[0].parameter, " ***"); v_returnValue := true; } else { v_returnValue := false; // Report for incorrect parameter if(p_IparameterList[0].paramNo==c_ciIParamNoErrors){ // Error Code was returned log("*** f_cnCheckOneIparamGetSuccess: ERROR: reading I-Parameter error: ", p_IparameterList[0].parameter, " was reported ***"); } else { log("*** f_cnCheckOneIparamGetSuccess: ERROR: the following I-Parameter: ", p_IparameterList[0].paramNo, " was was returned ***"); } } } else { // incorrect number or returned values log("*** f_cnCheckOneIparamGetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_IparameterList), " ***"); v_returnValue := false; } return v_returnValue; }// End of function f_cnCheckOneIparamGetSuccess } // End of group utPort group atspPort { Loading Loading @@ -837,7 +962,26 @@ module LibItsAtsp_Functions { group atspPIXITHelperFunctions { //used to address CI in IUT itself /** * @desc used to address a VCI in IUT, e.g. to be deleted */ function f_get_VCI_LinkID( in EUI64 p_remoteCIID ) return Link_ID { if(PICS_MAC48) { return {remoteCIID := p_remoteCIID, localCIID := PX_LOCAL_CIID} } else { return { remoteCIID := p_remoteCIID, localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // end /** * @desc used to address CI in IUT itself. */ function f_get_CI_LinkID() return Link_ID{ if(PICS_MAC48) { Loading @@ -845,12 +989,14 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_LOCAL_CI, localCIID := PX_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // end //used to address CI in the Test System itself /** * @desc used to address CI in the Test System itself */ function f_get_TesterCI_LinkID() return Link_ID{ if(PICS_MAC48) { Loading @@ -858,16 +1004,20 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_TESTER_REMOTE_CIID_LOCAL_CI, localCIID := PX_TESTER_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // end // used to send via a UC-VCI /** * @desc used to send via a UC-VCI */ // source_address field // use f_get_CI_LinkID // used to send via a UC-VCI in the IUT /** * @desc used to send via a UC-VCI in the IUT */ // destination_address field function f_get_DestinationVCI_UC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -876,12 +1026,14 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_UC, localCIID := PX_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_UC_LinkID // used to send via a UC-VCI in the Test System to the IUT /** * @desc used to send via a UC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_UC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -890,16 +1042,20 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_TESTER_REMOTE_CIID_UC, localCIID := PX_TESTER_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 255), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_DestinationVCI_UC_LinkID // used to send via a BC-VCI in the IUT /** * @desc used to send via a BC-VCI in the IUT */ // source_address field // use f_get_CI_LinkID // used to send via a BC-VCI /** * @desc used to send via a BC-VCI */ // destination_address field function f_get_DestinationVCI_BC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -908,12 +1064,14 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(63, PX_ITS_SCU_ID, PX_Med_ID, 65535), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_BC_LinkID // used to send via a BC-VCI in the Test System to the IUT /** * @desc used to send via a BC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_BC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -922,16 +1080,20 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_TESTER_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(63, 0, 0, 65535), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_TesterDestinationVCI_BC_LinkID // used to send via a BC-VCI in the IUT /** * @desc used to send via a BC-VCI in the IUT */ // source_address field // use f_get_CI_LinkID // used to send via a MC-VCI /** * @desc used to send via a MC-VCI */ // destination_address field function f_get_DestinationVCI_MC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -940,13 +1102,15 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER_MC), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_MC_LinkID // used to send via a MC-VCI in the Test System to the IUT /** * @desc used to send via a MC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_MC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -955,12 +1119,37 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_TESTER_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, 0, 0, PX_VCI_SERIAL_NUMBER_MC), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_TesterDestinationVCI_MC_LinkID /** * @desc used to create the EUI64 format of a legacy CI * @param p_uCmCbCnumber 63 for BC, 0 for UC, 1-62 for MC group * @param p_iTS_scuID ITS-SCU-ID * @param p_medID MedID * @param p_vCIserialNumber Serial number unique in CI */ function f_get_EUI64_LegacyCI ( in UInt6 p_uCmCbCnumber, in ITS_scuId p_iTS_scuID, in MedID p_medID, in VCIserialNumber p_vCIserialNumber ) return EUI64 { var UInt8 v_U8Integer; var EUI64 v_returnValue; v_U8Integer:= p_uCmCbCnumber * 4 +3; // 'shift left' two bits and set two lowest bits to one. v_returnValue := int2oct(v_U8Integer,1) & int2oct(p_iTS_scuID,2) & 'FFFE'O & int2oct(p_medID,1) & int2oct(p_vCIserialNumber,2); return v_returnValue; } // End of function f_get_EUI64_LegacyCI } // End of group atspPIXITHelperFunctions } // End of module LibItsAtsp_Functions ttcn/CALM/ATSP/LibItsAtsp_Pixits.ttcn3 +49 −3 Original line number Diff line number Diff line Loading @@ -23,6 +23,11 @@ module LibItsAtsp_Pixits { import from LibItsAtsp_TypesAndValues all; import from LibCommon_BasicTypesAndValues { type UInt8, UInt6 }; group Iparameter { /** * @desc Expected ITS-SCU-ID of the IUT CI Loading @@ -31,6 +36,13 @@ module LibItsAtsp_Pixits { */ modulepar ITS_scuId PX_ITS_SCU_ID := 0; /** * @desc Expected MedID of the IUT CI * @see ISO 21218 - Clause 6.2 Link Identifier * I-Parameter No c_ciIParamNoMedID */ modulepar MedID PX_Med_ID := 0; /** * @desc Expected MedType of the IUT CI * @see ISO 21218 - Clause 6.3 Link Identifier Loading @@ -38,6 +50,13 @@ module LibItsAtsp_Pixits { */ modulepar MedID PX_CI_MED_TYPE := 5; /** * @desc MedType of potential interferer * @see ISO 21218 - Clause 6.3 Link Identifier * used in PrioReg */ modulepar MedID PX_CI_INTERFERER_MED_TYPE := 5; /** * @desc Unknown I-Parameter No * @see ISO 21218 - Clause 6.3 Link Identifier Loading @@ -48,7 +67,15 @@ module LibItsAtsp_Pixits { * @desc Not supported I-Parameter * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar I_Param PX_CI_NO_SUPPORT_PARAM := {paramNo := c_ciIParamNoMinPrioCrossCI, parameter := {UserPriority := 0} }; modulepar I_Param PX_CI_NO_SUPPORT_PARAM := {paramNo := PX_CI_NO_SUPPORT_PARAM_NO, parameter := {UserPriority := 0} }; modulepar I_ParamNo PX_CI_NO_SUPPORT_PARAM_NO := c_ciIParamNoMinPrioCrossCI; /** * @desc Supported I-Parameter with write or read/write access * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar I_Param PX_CI_SUPPORT_PARAM_WR := {paramNo := PX_CI_SUPPORT_PARAM_WR_NO, parameter := {DataRate := 125} }; modulepar I_ParamNo PX_CI_SUPPORT_PARAM_WR_NO := 125; /** * @desc Supported Read-Only or Notify-Only I-Parameter Loading @@ -59,6 +86,12 @@ module LibItsAtsp_Pixits { } // End of group Iparameter /** * @desc T_DummyAckReq timer for prioritization procedure * @see ISO 21218 - Clause 6.4.11.3 */ modulepar float PX_TIMER_DUMMYAckReq := 0.1; // in seconds In reality the value has to be smaller /** * @desc Expected IN-SAP address * @see ISO 21218 - Clause 8.2 Addressing Loading @@ -68,11 +101,24 @@ module LibItsAtsp_Pixits { modulepar IN_SAPaddress PX_IN_SAP_ADDRESS := 186; /** * @desc Expected VCIserialNumber of the IUT CI * @desc Expected VCIserialNumber of the IUT UC-VCI * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER := 0; /** * @desc Expected VCIserialNumber of the IUT MC-VCI * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER_MC := 0; /** * @desc MultiCast group ID of the IUT legacy CI * @see ISO 21218 - Clause 6.3 Link Identifier * Range from 1 through 62 */ modulepar UInt6 PX_LEGACY_VCI_MC_GROUP_ID := 1; /** * Wait until the IUT is in a stable situation */ Loading ttcn/CALM/ATSP/LibItsAtsp_Templates.ttcn3 +107 −21 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ module LibItsAtsp_Templates { type CIstateChng, WakeUp, RIcmd, RI, RegCmd, RegReq, Events21218, PrioReg, RTSreq,RTSackCmd, RTScmd, RTSackReq, E21218_3, E21218_4, E21218_5, E21218_7, StationID, CommandRef, ErrStatus, MI_Command_request, MI_Command_confirm, Loading Loading @@ -175,7 +176,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqRegCmd, ref := c_miCmd_regCmd, command_param := {RegCmd := p_regCmd} } // End of template m_miRegistrationCommandRequest Loading @@ -192,7 +193,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqUnitData, ref := c_miCmd_unitDataCmd, command_param := {UnitData := p_unitData} } // End of template MI_Command_request m_miUnitDataCmdCommandRequest Loading @@ -215,6 +216,23 @@ module LibItsAtsp_Templates { /** * @desc Send template for MI-COMMAND.request containing state change command service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_stateChng State change primitive */ template (value) MI_Command_request m_miRTSackCmdCommandRequest( in template (value) Link_ID p_linkID, in template (value) CommandRef p_commandRef, in template (value) RTSackCmd p_rTSackCmd ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmd_rTSackCmd, command_param := {RTSackCmd := p_rTSackCmd} } // End of template m_miRTSackCmdCommandRequest /** * @desc Send template for MI-COMMAND.request containing state change command service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_stateChng State change primitive */ Loading @@ -225,7 +243,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCIstateChng, ref := c_miCmd_ciState, command_param := {CIstateChng := p_stateChng} } // End of template m_miStateChangeCommandRequest Loading Loading @@ -278,7 +296,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCONcmd, ref := c_miCmd_cONcmd, command_param := {CONcmd := p_conCMD} } // End of template m_miCONcmdCommandRequest Loading @@ -295,7 +313,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqWakeUp, ref := c_miCmd_wakeUp, command_param := {WakeUp := p_wakeUp} } // End of template m_miWakeUpCommandRequest Loading @@ -312,7 +330,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqRIcmd, ref := c_miCmd_rIcmd, command_param := {RIcmd := p_riCmd} } // End of template m_miRICmdCommandRequest Loading Loading @@ -342,7 +360,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCIstateChng, ref := c_miCmd_ciState, command_param := {VciCmd := p_vciCmd} } // End of template m_miVCIcmdCommandRequest Loading @@ -357,18 +375,10 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 254, ref := c_miCmd_UnknownCmd, command_param := {UnknownCommand := 100} } // End of template m_miUnknownCommandRequest } // End of group cfPortTools group atspPort { Loading Loading @@ -591,7 +601,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 1, ref := c_miReq_regReq, request_param := { RegReq := p_regReq } Loading Loading @@ -653,7 +663,7 @@ module LibItsAtsp_Templates { template E21218_5 mw_miCIStatusParam( in template CIstatus p_ciStatus ) := { paramNo := 13, paramNo := c_ciIParamNoCiStatus, parameter := { CIstatus := p_ciStatus } Loading @@ -672,12 +682,88 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 5, ref := c_miReq_events, request_param := { Events21218 := p_event } } // End of template mw_miEventsRequest /** * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miPrioRegRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template PrioReg p_prioReg ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_prioReg, request_param := { PrioReg := p_prioReg } } // End of template mw_miPrioRegRequest /** * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTSackReqRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTSackReq p_rTSackReq ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_rTSackReq, request_param := { RTSackReq := p_rTSackReq } } // End of template mw_miRTSackReqRequest /** * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTSreqRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTSreq p_rTSreq ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_prioReg, request_param := { RTSreq := p_rTSreq } } // End of template mw_miRTSreqRequest /** * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTScmdRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTScmd p_rTScmd ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmd_rTScmd, request_param := { RTScmd := p_rTScmd } } // End of template mw_miRTScmdRequest /** * @desc Generic receive template for MI-SET.confirm service primitive * @param p_linkID Link ID of the peer station Loading ttcn/CALM/ATSP/LibItsAtsp_TypesAndValues.ttcn3 +35 −15 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
ttcn/CALM/ATSP/LibItsAtsp_Functions.ttcn3 +220 −31 Original line number Diff line number Diff line Loading @@ -9,9 +9,10 @@ module LibItsAtsp_Functions { import from LibCommon_Sync all; import from CALMllsap language "ASN.1:1997" { type UserPriority, UserPriority, VCIserialNumber, EUI64, LLserviceAddr, INdata, IN_SAPaddress, CIstatus, Link_ID, MedType, Errors CIstatus, Link_ID, MedType, Errors, I_Param, I_ParamNo, MedID }; import from CALMmsap language "ASN.1:1997" { Loading @@ -22,6 +23,11 @@ module LibItsAtsp_Functions { CommandRef }; import from CALMmanagement language "ASN.1:1997" { type ITS_scuId }; import from LibItsCalm_Interface { type ItsCalm Loading Loading @@ -49,6 +55,7 @@ module LibItsAtsp_Functions { import from LibItsMgt_Functions { function f_getNextCommandRef }; import from LibCommon_BasicTypesAndValues all; group preambles { Loading Loading @@ -78,7 +85,7 @@ module LibItsAtsp_Functions { v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); } // check again CI status after activation of IUT if( (v_CIstatus != c_ciStatusActive)) if( v_CIstatus != c_ciStatusActive) { log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error Loading @@ -93,6 +100,35 @@ module LibItsAtsp_Functions { // End of function f_initialCIstateActive /** * @desc Checks whether the IUT is in the initial CI state "active" or connected. */ function f_initialCIstateActiveConnected() runs on ItsCalm return CIstatus { var CIstatus v_CIstatus; // CI status has to be "active" v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) // wrong status { // Request operator to switch on the SUT or to activate the IUT action("Switch on SUT or activate IUT"); v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); } // check again CI status after activation of IUT if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) { log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error stop; } else { log("*** f_initialCIstateActive: Allowed initial CI status returned ***", v_CIstatus); } return v_CIstatus } // End of function f_initialCIstateActiveConnected /** * @desc Checks whether the IUT is in an operational initial CI state * i.e. not in "not-existent", "existent", "unknown". */ Loading Loading @@ -727,6 +763,95 @@ module LibItsAtsp_Functions { } }// End of function f_utSendIN_UNITDATA_Request /** * @desc Check proper executing of MI-SET.command for a single I-Parameter * @param p_cfSetErrorList Error list returned in MI-SET.confirm * @return Boolean: TRUE = success */ function f_cnCheckOneIparamSetSuccess( in I_ParamNo p_IparmNo, in Errors p_cfSetErrorList ) runs on ItsCalm return boolean { //local variable(s) var boolean v_returnValue; if(lengthof(p_cfSetErrorList) == 0){ // no error occured v_returnValue := true; } else if(lengthof(p_cfSetErrorList) == 1){ // correct number or error statuses reported if(p_cfSetErrorList[0].paramNo == p_IparmNo) { // report for correct parameter if (p_cfSetErrorList[0].errStatus == c_ciErrStatusSuccess) { // success reported v_returnValue := true; } else { // Error reported log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter. Error code: ", p_cfSetErrorList[0].errStatus, " ***"); v_returnValue := false; } } else { // Report for incorrect parameter log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: wrong I-ParamNo: ", p_cfSetErrorList[0].paramNo, " ***"); v_returnValue := false; } } else { // Incorrect size of Error list log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_cfSetErrorList), " ***"); v_returnValue := false; } return v_returnValue; }// End of function f_cnCheckOneIparamSetSuccess /** * @desc Check proper executing of MI-GET.command for a single I-Parameter * @param p_returnedValues Value list returned in MI-GET.confirm * @return Boolean: TRUE = success */ function f_cnCheckOneIparamGetSuccess( in I_ParamNo p_IparmNo, in IParamList p_IparameterList, out I_Param p_Iparam ) runs on ItsCalm return boolean { //local variable(s) var boolean v_returnValue; if(lengthof(p_IparameterList) == 1){ // correct number or returned values if(p_IparameterList[0].paramNo == p_IparmNo) { // correct parameter returned p_Iparam := p_IparameterList[0]; log("*** f_cnCheckOneIparamGetSuccess: INFO: reading I-Parameter: ", p_IparmNo, " was correctly done: ", p_IparameterList[0].parameter, " ***"); v_returnValue := true; } else { v_returnValue := false; // Report for incorrect parameter if(p_IparameterList[0].paramNo==c_ciIParamNoErrors){ // Error Code was returned log("*** f_cnCheckOneIparamGetSuccess: ERROR: reading I-Parameter error: ", p_IparameterList[0].parameter, " was reported ***"); } else { log("*** f_cnCheckOneIparamGetSuccess: ERROR: the following I-Parameter: ", p_IparameterList[0].paramNo, " was was returned ***"); } } } else { // incorrect number or returned values log("*** f_cnCheckOneIparamGetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_IparameterList), " ***"); v_returnValue := false; } return v_returnValue; }// End of function f_cnCheckOneIparamGetSuccess } // End of group utPort group atspPort { Loading Loading @@ -837,7 +962,26 @@ module LibItsAtsp_Functions { group atspPIXITHelperFunctions { //used to address CI in IUT itself /** * @desc used to address a VCI in IUT, e.g. to be deleted */ function f_get_VCI_LinkID( in EUI64 p_remoteCIID ) return Link_ID { if(PICS_MAC48) { return {remoteCIID := p_remoteCIID, localCIID := PX_LOCAL_CIID} } else { return { remoteCIID := p_remoteCIID, localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // end /** * @desc used to address CI in IUT itself. */ function f_get_CI_LinkID() return Link_ID{ if(PICS_MAC48) { Loading @@ -845,12 +989,14 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_LOCAL_CI, localCIID := PX_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // end //used to address CI in the Test System itself /** * @desc used to address CI in the Test System itself */ function f_get_TesterCI_LinkID() return Link_ID{ if(PICS_MAC48) { Loading @@ -858,16 +1004,20 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_TESTER_REMOTE_CIID_LOCAL_CI, localCIID := PX_TESTER_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // end // used to send via a UC-VCI /** * @desc used to send via a UC-VCI */ // source_address field // use f_get_CI_LinkID // used to send via a UC-VCI in the IUT /** * @desc used to send via a UC-VCI in the IUT */ // destination_address field function f_get_DestinationVCI_UC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -876,12 +1026,14 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_UC, localCIID := PX_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_UC_LinkID // used to send via a UC-VCI in the Test System to the IUT /** * @desc used to send via a UC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_UC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -890,16 +1042,20 @@ module LibItsAtsp_Functions { } else { //TODO: LegacyCIIDs return {remoteCIID := PX_TESTER_REMOTE_CIID_UC, localCIID := PX_TESTER_LOCAL_CIID}; return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 255), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_DestinationVCI_UC_LinkID // used to send via a BC-VCI in the IUT /** * @desc used to send via a BC-VCI in the IUT */ // source_address field // use f_get_CI_LinkID // used to send via a BC-VCI /** * @desc used to send via a BC-VCI */ // destination_address field function f_get_DestinationVCI_BC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -908,12 +1064,14 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(63, PX_ITS_SCU_ID, PX_Med_ID, 65535), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_BC_LinkID // used to send via a BC-VCI in the Test System to the IUT /** * @desc used to send via a BC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_BC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -922,16 +1080,20 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_TESTER_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(63, 0, 0, 65535), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_TesterDestinationVCI_BC_LinkID // used to send via a BC-VCI in the IUT /** * @desc used to send via a BC-VCI in the IUT */ // source_address field // use f_get_CI_LinkID // used to send via a MC-VCI /** * @desc used to send via a MC-VCI */ // destination_address field function f_get_DestinationVCI_MC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -940,13 +1102,15 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER_MC), localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} } } // End of function f_get_DestinationVCI_MC_LinkID // used to send via a MC-VCI in the Test System to the IUT /** * @desc used to send via a MC-VCI in the Test System to the IUT */ // destination_address field function f_get_TesterDestinationVCI_MC_LinkID() return Link_ID{ if(PICS_MAC48) Loading @@ -955,12 +1119,37 @@ module LibItsAtsp_Functions { } else { //LegacyCIIDs return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_TESTER_LOCAL_CIID} return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, 0, 0, PX_VCI_SERIAL_NUMBER_MC), localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} } } // End of function f_get_TesterDestinationVCI_MC_LinkID /** * @desc used to create the EUI64 format of a legacy CI * @param p_uCmCbCnumber 63 for BC, 0 for UC, 1-62 for MC group * @param p_iTS_scuID ITS-SCU-ID * @param p_medID MedID * @param p_vCIserialNumber Serial number unique in CI */ function f_get_EUI64_LegacyCI ( in UInt6 p_uCmCbCnumber, in ITS_scuId p_iTS_scuID, in MedID p_medID, in VCIserialNumber p_vCIserialNumber ) return EUI64 { var UInt8 v_U8Integer; var EUI64 v_returnValue; v_U8Integer:= p_uCmCbCnumber * 4 +3; // 'shift left' two bits and set two lowest bits to one. v_returnValue := int2oct(v_U8Integer,1) & int2oct(p_iTS_scuID,2) & 'FFFE'O & int2oct(p_medID,1) & int2oct(p_vCIserialNumber,2); return v_returnValue; } // End of function f_get_EUI64_LegacyCI } // End of group atspPIXITHelperFunctions } // End of module LibItsAtsp_Functions
ttcn/CALM/ATSP/LibItsAtsp_Pixits.ttcn3 +49 −3 Original line number Diff line number Diff line Loading @@ -23,6 +23,11 @@ module LibItsAtsp_Pixits { import from LibItsAtsp_TypesAndValues all; import from LibCommon_BasicTypesAndValues { type UInt8, UInt6 }; group Iparameter { /** * @desc Expected ITS-SCU-ID of the IUT CI Loading @@ -31,6 +36,13 @@ module LibItsAtsp_Pixits { */ modulepar ITS_scuId PX_ITS_SCU_ID := 0; /** * @desc Expected MedID of the IUT CI * @see ISO 21218 - Clause 6.2 Link Identifier * I-Parameter No c_ciIParamNoMedID */ modulepar MedID PX_Med_ID := 0; /** * @desc Expected MedType of the IUT CI * @see ISO 21218 - Clause 6.3 Link Identifier Loading @@ -38,6 +50,13 @@ module LibItsAtsp_Pixits { */ modulepar MedID PX_CI_MED_TYPE := 5; /** * @desc MedType of potential interferer * @see ISO 21218 - Clause 6.3 Link Identifier * used in PrioReg */ modulepar MedID PX_CI_INTERFERER_MED_TYPE := 5; /** * @desc Unknown I-Parameter No * @see ISO 21218 - Clause 6.3 Link Identifier Loading @@ -48,7 +67,15 @@ module LibItsAtsp_Pixits { * @desc Not supported I-Parameter * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar I_Param PX_CI_NO_SUPPORT_PARAM := {paramNo := c_ciIParamNoMinPrioCrossCI, parameter := {UserPriority := 0} }; modulepar I_Param PX_CI_NO_SUPPORT_PARAM := {paramNo := PX_CI_NO_SUPPORT_PARAM_NO, parameter := {UserPriority := 0} }; modulepar I_ParamNo PX_CI_NO_SUPPORT_PARAM_NO := c_ciIParamNoMinPrioCrossCI; /** * @desc Supported I-Parameter with write or read/write access * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar I_Param PX_CI_SUPPORT_PARAM_WR := {paramNo := PX_CI_SUPPORT_PARAM_WR_NO, parameter := {DataRate := 125} }; modulepar I_ParamNo PX_CI_SUPPORT_PARAM_WR_NO := 125; /** * @desc Supported Read-Only or Notify-Only I-Parameter Loading @@ -59,6 +86,12 @@ module LibItsAtsp_Pixits { } // End of group Iparameter /** * @desc T_DummyAckReq timer for prioritization procedure * @see ISO 21218 - Clause 6.4.11.3 */ modulepar float PX_TIMER_DUMMYAckReq := 0.1; // in seconds In reality the value has to be smaller /** * @desc Expected IN-SAP address * @see ISO 21218 - Clause 8.2 Addressing Loading @@ -68,11 +101,24 @@ module LibItsAtsp_Pixits { modulepar IN_SAPaddress PX_IN_SAP_ADDRESS := 186; /** * @desc Expected VCIserialNumber of the IUT CI * @desc Expected VCIserialNumber of the IUT UC-VCI * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER := 0; /** * @desc Expected VCIserialNumber of the IUT MC-VCI * @see ISO 21218 - Clause 6.3 Link Identifier */ modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER_MC := 0; /** * @desc MultiCast group ID of the IUT legacy CI * @see ISO 21218 - Clause 6.3 Link Identifier * Range from 1 through 62 */ modulepar UInt6 PX_LEGACY_VCI_MC_GROUP_ID := 1; /** * Wait until the IUT is in a stable situation */ Loading
ttcn/CALM/ATSP/LibItsAtsp_Templates.ttcn3 +107 −21 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ module LibItsAtsp_Templates { type CIstateChng, WakeUp, RIcmd, RI, RegCmd, RegReq, Events21218, PrioReg, RTSreq,RTSackCmd, RTScmd, RTSackReq, E21218_3, E21218_4, E21218_5, E21218_7, StationID, CommandRef, ErrStatus, MI_Command_request, MI_Command_confirm, Loading Loading @@ -175,7 +176,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqRegCmd, ref := c_miCmd_regCmd, command_param := {RegCmd := p_regCmd} } // End of template m_miRegistrationCommandRequest Loading @@ -192,7 +193,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqUnitData, ref := c_miCmd_unitDataCmd, command_param := {UnitData := p_unitData} } // End of template MI_Command_request m_miUnitDataCmdCommandRequest Loading @@ -215,6 +216,23 @@ module LibItsAtsp_Templates { /** * @desc Send template for MI-COMMAND.request containing state change command service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_stateChng State change primitive */ template (value) MI_Command_request m_miRTSackCmdCommandRequest( in template (value) Link_ID p_linkID, in template (value) CommandRef p_commandRef, in template (value) RTSackCmd p_rTSackCmd ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmd_rTSackCmd, command_param := {RTSackCmd := p_rTSackCmd} } // End of template m_miRTSackCmdCommandRequest /** * @desc Send template for MI-COMMAND.request containing state change command service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_stateChng State change primitive */ Loading @@ -225,7 +243,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCIstateChng, ref := c_miCmd_ciState, command_param := {CIstateChng := p_stateChng} } // End of template m_miStateChangeCommandRequest Loading Loading @@ -278,7 +296,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCONcmd, ref := c_miCmd_cONcmd, command_param := {CONcmd := p_conCMD} } // End of template m_miCONcmdCommandRequest Loading @@ -295,7 +313,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqWakeUp, ref := c_miCmd_wakeUp, command_param := {WakeUp := p_wakeUp} } // End of template m_miWakeUpCommandRequest Loading @@ -312,7 +330,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqRIcmd, ref := c_miCmd_rIcmd, command_param := {RIcmd := p_riCmd} } // End of template m_miRICmdCommandRequest Loading Loading @@ -342,7 +360,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmdReqCIstateChng, ref := c_miCmd_ciState, command_param := {VciCmd := p_vciCmd} } // End of template m_miVCIcmdCommandRequest Loading @@ -357,18 +375,10 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 254, ref := c_miCmd_UnknownCmd, command_param := {UnknownCommand := 100} } // End of template m_miUnknownCommandRequest } // End of group cfPortTools group atspPort { Loading Loading @@ -591,7 +601,7 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 1, ref := c_miReq_regReq, request_param := { RegReq := p_regReq } Loading Loading @@ -653,7 +663,7 @@ module LibItsAtsp_Templates { template E21218_5 mw_miCIStatusParam( in template CIstatus p_ciStatus ) := { paramNo := 13, paramNo := c_ciIParamNoCiStatus, parameter := { CIstatus := p_ciStatus } Loading @@ -672,12 +682,88 @@ module LibItsAtsp_Templates { ) := { linkID := p_linkID, commandRef := p_commandRef, ref := 5, ref := c_miReq_events, request_param := { Events21218 := p_event } } // End of template mw_miEventsRequest /** * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miPrioRegRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template PrioReg p_prioReg ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_prioReg, request_param := { PrioReg := p_prioReg } } // End of template mw_miPrioRegRequest /** * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTSackReqRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTSackReq p_rTSackReq ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_rTSackReq, request_param := { RTSackReq := p_rTSackReq } } // End of template mw_miRTSackReqRequest /** * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTSreqRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTSreq p_rTSreq ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miReq_prioReg, request_param := { RTSreq := p_rTSreq } } // End of template mw_miRTSreqRequest /** * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive * @param p_linkID Link-ID of VCI / CI. * @param p_commandRef Unique cyclic reference number of command. * @param p_regReq Registration request primitive */ template MI_Request_request mw_miRTScmdRequest( in template Link_ID p_linkID, in template CommandRef p_commandRef, in template RTScmd p_rTScmd ) := { linkID := p_linkID, commandRef := p_commandRef, ref := c_miCmd_rTScmd, request_param := { RTScmd := p_rTScmd } } // End of template mw_miRTScmdRequest /** * @desc Generic receive template for MI-SET.confirm service primitive * @param p_linkID Link ID of the peer station Loading
ttcn/CALM/ATSP/LibItsAtsp_TypesAndValues.ttcn3 +35 −15 File changed.Preview size limit exceeded, changes collapsed. Show changes