/** * @author ETSI / STF422_EETS * @version $URL:$ * $Id:$ * @desc ITS station management (ISO 24102-3) functions */ module LibItsMgt_Functions { // LibCommon import from LibCommon_BasicTypesAndValues { const c_uInt8Max; }; import from LibCommon_Sync { function f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictPreamble }; import from LibCommon_VerdictControl all; // LibIts import from CALMiitsscu language "ASN.1:1997" { type PduCounter }; import from CALMllsap language "ASN.1:1997" { type MedType, CIaClass, CIclass }; import from CALMmanagement language "ASN.1:1997" { type ITS_scuId }; import from CALMmsap language "ASN.1:1997" { type CommandRef, MN_Request_request, FWTupdate, MF_Request_request }; // import from CALMfsap language "ASN.1:1997" { // type // GCregServer, GCregClient, GCderegClient, GCctxTxCmd, CTXrxNot // }; import from LibItsMgt_Templates all; import from LibItsMgt_Pixits all; import from LibIts_Interface { type ItsMgt, MgtMNSapCommandReq }; group functions { /** * @desc Triggers a request command event in the test system adaptation. * @param p_requestRequest The remote commad to trigger * @return FncRetCode */ function f_mgtMFTriggerRequest( in template (value) MF_Request_request p_requestRequest ) runs on ItsMgt return FncRetCode { var FncRetCode v_ret := e_success; mgtMFSapPort.send(m_mgtMFSapRequestReq(p_requestRequest)); return v_ret; } } // End of group functions group mgtAltsteps { group mfSap { /** * @desc The base default. * @see ISO/CD 24102-3 Clause 8.2 */ altstep a_mgtMFSapPortDefault() runs on ItsMgt { [] mgtMFSapPort.receive(mw_mgtMFSapCommandReq(mw_mfCommandRequest_any)) { // Receive any MF-COMMAND.request message log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***"); repeat; } [] mgtMFSapPort.receive(mw_mgtMFSapRequestReq(mw_mfRequestRequest_any)) { // Receive any MF-COMMAND.request message log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***"); repeat; } // FIXME Add support of response to CommandRequest & RequestRequest // [] mgtMFSapPort.receive(mw_mgtMFSapCommandInd(mw_mfCommandRequest_any)) { // Receive any MF-COMMAND.request message // log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***"); // repeat; // } [] mgtMFSapPort.receive(mw_mgtMFSapRequestConfirm(mw_mfRequestConfirm(0))) { // Receive any MF-REQUEST.confirm message with success status log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***"); repeat; } [] mgtMFSapPort.receive(mw_mgtMFSapRequestConfirm(mw_mfRequestConfirm(?))) { // Receive any MF-REQUEST.confirm message with error status f_selfOrClientSyncAndVerdict("error", e_error); log("*** a_mgtMFSapPortDefault: ERROR: Received MF-SAP error status ***"); } [] mgtMFSapPort.receive { // Receive unknown message f_selfOrClientSyncAndVerdict("error", e_error); log("*** a_mgtMFSapPortDefault: ERROR: Event received on MgtMFSapPort port in default ***"); } } // End of altstep a_mgtMFSapPortDefault // /** // * @desc Wait for REQUEST.confirm/GCregServer MF-REQUEST.confirm // * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request // * @verdict Unchanged // */ // altstep a_mgtAwaitGCregServerReqConf(in CommandRef p_commandRef) runs on ItsMgt { // // [] mgtMFSapPort.receive(mw_mgtMFSapRequestConfirm(mdw_gCregServerRequestConf(p_commandRef))) { // log("*** a_mgtAwaitGCregServerReqConf: INFO: MF-SAP GCregServer service primitive received ***"); // repeat; // } // } // End of altstep a_mgtAwaitGCregServerReqConf } // End of group mfSap group mnSap { /** * @desc The base default. * @see ISO/CD 24102-3 Clause 8.2 */ altstep a_mgtMNSapPortDefault() runs on ItsMgt { [] mgtMNSapPort.receive(mw_mgtMNSapCommandConfirm(mw_mnCommandConfirm_any)) { // Receive any MF-COMMAND.confirm message log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-COMMAND.confirm received in default ***"); repeat; } [] mgtMNSapPort.receive(mw_mgtMNSapRequestConfirm(mw_mnRequestConfirm_any)) { // Receive any MF-REQUEST.confirm message log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-REQUEST.confirm received in default ***"); repeat; } [] mgtMNSapPort.receive(mw_mgtMNSapRequestReq(mw_mnRequestRequest_any)) { // Receive any MF-REQUEST.request message log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-REQUEST.request received in default ***"); repeat; } [] mgtMNSapPort.receive { // Receive unknown message log("*** a_mgtMNSapPortDefault: ERROR: event received on MgtMNSapPort port in default ***"); f_selfOrClientSyncAndVerdict("error", e_error); } } // End of altstep a_mgtMNSapPortDefault /** * @desc Wait for MN_COMMAND/FWTupdate message * @verdict Unchanged * @see ISO/WD 24102-3 - Clause D.2.4 FWTupdate */ altstep a_mgtSapAwaitFWTupdate() runs on ItsMgt { var MgtMNSapCommandReq v_fWTupdate; [] mgtMNSapPort.receive(mw_mgtMNSapCommandReq(mw_fWTUpdateCommandReq)) -> value v_fWTupdate { log("*** a_mgtSapAwaitFWTupdate: INFO: MN-SAP FWTupdate service primitive received: vc_noFNTPfwtEntry=" & int2str(vc_noFNTPfwtEntry) & " ***"); } } // End of altstep a_mgtSapAwaitFWTupdate /** * @desc Wait for a notification of creation of an entry in a forwarding table. * @see ISO/WD 24102-3 Clause E.2.2 FWTsetNot * @verdict Unchanged */ altstep a_mgtAwaitFWTsetNot() runs on ItsMgt { [] mgtMNSapPort.receive(mw_mgtMNSapRequestReq(mdw_fWTSetNotRequestReq)) { log("*** a_mgtAwaitFWTsetNot: INFO: MN-SAP FWTupdateNot service primitive received ***"); } } // End of altstep a_mgtAwaitFWTsetNot /** * @desc Wait for creation of an entry in a forwarding table. * @see ISO/WD 24102-4 Clause D.2.3 FWTset * @verdict Unchanged */ altstep a_mgtAwaitFWTset() runs on ItsMgt { [] mgtMNSapPort.receive(mw_mgtMNSapCommandReq(mw_fWTSetCommandReq)) { log("*** a_mgtAwaitFWTset: INFO: MN-SAP FWTupdateNot service primitive received ***"); } } // End of altstep a_mgtAwaitFWTset } // End of group mnSap } // End of group mgtAltsteps group preambule { } // End of group preambule group testerFunctions { /** * @desc Increments the pdu counter and returns the new value * @return The new pdu counter value * * @see ISO/WD 24102-4 - Clause 6.2.1 */ function f_getNextPduCounter() runs on ItsMgt return PduCounter { vc_pduCounter := (vc_pduCounter + 2) mod (c_uInt8Max - 1); // ISO/WD 24102-4 - Clause 6.2.1: modulus 254 return vc_pduCounter; } // End of function f_getNextPduCounter /** * @desc Increments the commandRef value and returns it * @return The new commandRef value */ function f_getNextCommandRef() runs on ItsMgt return CommandRef { vc_commandRef := (vc_commandRef + 1) mod (c_uInt8Max + 1); return vc_commandRef; } // End of function f_getNextCommandRef } // End of group testerFunctions group iutFunctions { /** * @desc Get the ITS-SCU-ID of the source ITS-SCU which produces the request * @return The ITS-SCU-ID of the source ITS-SCU which produces the request * @see PX_SRC_ITS_SCU_ID */ function f_getIutSourceITS_scuId() return ITS_scuId { return PX_SRC_ITS_SCU_ID; } /** * @desc Get the Host ITS-SCU-ID * @return The Host ITS-SCU-ID * @see PX_DST_ITS_SCU_ID */ function f_getIutDestITS_scuId() return ITS_scuId { return PX_DST_ITS_SCU_ID; } /** * @desc Get the type of access technology (medium) * @return The type of access technology (medium) * @see PX_MED_TYPE */ function f_getIutMedType() return MedType { return PX_MED_TYPE; } /** * @desc Get the CI access class * @return The CI access class * @see PX_CIACLASS */ function f_getIutCIaClass() return CIaClass { return PX_CIACLASS; } /** * @desc Get the CI access class * @return The CI access class * @see PX_CICLASS */ function f_getIutCIClass() return CIclass { return PX_CICLASS; } } // End of group iutFunctions } // End of module LibItsMgt_Functions