Commit 90640452 authored by garciay's avatar garciay
Browse files

Align TTCN-3 code on draft ETSI TS 102 985-2 v0.0.8

parent c4e2da8e
Loading
Loading
Loading
Loading
+70 −93
Original line number Diff line number Diff line
@@ -34,9 +34,6 @@ module LibItsFntp_Functions {
            EUI64, IN_SAPaddress, LLserviceAddr, Link_ID, AccessParameters 
    }; 
    import from CALMfntp language "ASN.1:1997" all; 
    import from LibItsMgt_TypesAndValues { 
        type MacAddressType 
    }; 
    import from LibItsMgt_Functions { 
        altstep 
            a_mgtMNSapPortDefault, a_mgtSapAwaitFWTupdate 
@@ -63,7 +60,8 @@ module LibItsFntp_Functions {
    };
    import from LibItsCommon_Functions {
        function
            f_utInitializeIut, f_utCommandRequest
            f_utInitializeIut, 
            f_utCommandRequestConfirm, f_utCommandRequestWithoutConfirm
    };
    import from LibIts_Interface all; 
    
@@ -197,7 +195,7 @@ module LibItsFntp_Functions {
        function f_initialState() runs on ItsNt {
            
            f_utInitializeIut(m_fntpInitialize);
            f_sleepIgnoreDef(2.0); // Wait until the IUT is in a stable situation (beaconing...)
            f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation (beaconing...)
        } // End of function f_initialState
        
        /**
@@ -206,24 +204,20 @@ module LibItsFntp_Functions {
         * <li>the IUT having an entry in the FNTP forwarding table for unicast communication with remote Link Port and Service Port</li>
         * <li>the IUT having an entry in the FNTP forwarding table for Service Port = port1, but not for Service Port = port2</li>
         * <li>the IUT having an entry in the FNTP forwarding table for a Service Port, but no entry for the peer station</li>
         * @param p_macAddressType Indicates the type of MAC address content
         * @param p_port Indicates the port number
         * @verdict Unchanged on success, set to fail on error (e_timeout)
         * @see ISO/WD 29281-2 Clause 8.2
         */
        function f_initializeFntpForwardingTable(in MacAddressType p_macAddressType, in UInt16 p_port) runs on ItsNt {
        function f_initializeFntpForwardingTable(in PortNumber p_port) runs on ItsNt {
            // Request allocation of a port number associated with the ITS-SP
            f_utCommandRequest(
            // TODO Consider case of c_portDyn, and use f_utCommandRequestConfirm
            f_utCommandRequestWithoutConfirm(
                m_generateNfFntpPortCreationRequest(
                    f_getIutServiceRef(), 
                    p_port),
                mw_fntpPortConfirm(
                    f_getIutServiceRef(), 
                    ?),
                false, // Reply is expected to retrieve the port number
                vc_utCommandConf);
                    p_port)
            );
            // Store the allocated port number
            vc_portNumber := vc_utCommandConf.utFntpCommandConfirm.nfSapPrimitives.primitivesUp.fntpPortConfirm.servicePort;
            vc_portNumber := p_port;
            if (ischosen(vc_portNumber.portShort)) {
                log("*** f_initializeFntpForwardingTable: INFO: portNumber value is: " & int2str(vc_portNumber.portShort) & " ***");
            } else {
@@ -234,67 +228,34 @@ module LibItsFntp_Functions {
            
        } // End of function f_initializeFntpForwardingTable
        
//        /**
//         * @desc Implement the following Initial conditions:
//         * <li>the IUT having an entry in the FNTP forwarding table for a Service Port, but no entry for the peer station</li>
//         * @param p_macAddressType Indicates the type of MAC address content
//         * @param p_port Indicates the port number
//         * @verdict Set to fail on error (timeout)
//         * 
//         * See ISO/WD 29281-2 Clause 8.2
//         */
//        // FIXME What does 'but no entry for the peer station' mean?
//        function f_initializeFntpForwardingTableWithNoPeerStation(in MacAddressType p_macAddressType, in UInt16 p_port) runs on ItsNt {
//            var boolean v_retCode := false;
//            
//            // FIXME To be rewritten
////            // Create sockect sending for FTN-SOCKET.request with a dynamic port allocation & waiting for FTN-SOCKET.confirm
////            f_utCommandRequest(
////                m_generateNfFntpSocketCreationRequest(f_getIutServiceRef(), p_port),
////                mw_fntpSocketConfirm(f_getIutServiceRef(), ?),
////                false, // Reply is expected to retrieve the port number
////                vc_utCommandConf);
////                
////            // Store the allocated port number
////            vc_portNumber := vc_utCommandConf.utFntpCommandConfirm.nfSapPrimitives.fntpSocketConfirm.servicePort;
////            log("*** f_initializeFntpForwardingTableWithNoPeerStation: INFO: portNumber value is: " & int2str(vc_portNumber) & " ***");
////            
////            // And wait for a MN-SAP.MN-COMMAND/FWTupdate message sent by IST management entity to update the forwarding table
////            f_mnSapAwaitFWTupdate();
//            
//        } // End of function f_initializeFntpForwardingTableWithNoPeerStation
//        
        /**
         * @desc Call this method to remove entry created by f_initializeFntpForwardingTable() in FNTP Forwarding Table
         * @verdict Unchanged
         */
        function f_unInitializeFntpForwardingTable() runs on ItsNt {
            // check c_portDyn
            // Send for FTN-SOCKET.request & Wait for FTN-SOCKET.confirm
            f_utCommandRequest(
            f_utCommandRequestConfirm(
                m_generateNfFntpPortDeletionRequest(f_getIutServiceRef(), vc_portNumber),
                mw_fntpPortConfirm(f_getIutServiceRef(), ?),
                false,
                vc_utCommandConf);
        } // End of function f_unInitializeFntpForwardingTable
        
//        /**
//         * @desc    TODO
//         * @verdict Unchanged on success, set to fail on error (e_timeout)
//         */
//        function f_registerToGroupcasting() runs on ItsNt {
//            if (not(f_mgtItsApplRegToGroupcasting(m_gCregClient(f_getIutHostScuIdValue(), f_getIutServiceIdValue())))) {
//                log("*** f_registerToGroupcasting: ERROR: Timeout while waiting for GCregClient MF-REQUEST.confirm serviec primitive ***");
//                f_selfOrClientSyncAndVerdict("error", e_timeout);
//            }
//        } // End of function f_registerToGroupcasting
//        
//        function f_deregisterToGroupcasting() runs on ItsNt {
//            if (not(f_mgtItsApplDeregToGroupcasting(m_gCderegClient(f_getIutHostScuIdValue())))) {
//                log("*** f_deregisterToGroupcasting: ERROR: Timeout while waiting for GCderegClient MF-REQUEST.confirm serviec primitive ***");
//                f_selfOrClientSyncAndVerdict("error", e_timeout);
//            }
//        } // End of function f_deregisterToGroupcasting
//        
        /**
         * @desc Trigger a basic FNTPNPDU to create an entry in forwarding table for a known peer station 
         */
        function f_setupKnownPeerStation() runs on ItsNt { 
            f_acGenerateFntpNPDU( 
                f_getIutRemotePortNumberValue(), 
                vc_portNumber, 
                m_llServiceAddr(m_linkID(f_getIutSrcRemoteCIID_BC(), f_getIutSrcLocalCIID())), 
                m_llServiceAddr(m_linkID(f_getIutRemoteDestCIID_BC(), f_getIutDestLocalCIID())), 
                f_getIutSHopValue() 
            );
            // TODO Do we ignore management and NF-COMM.indication messages?
        } // End of function f_setupKnownPeerStation
        
    } // End of group preambles
    
    group postambles {
@@ -303,7 +264,7 @@ module LibItsFntp_Functions {
         * @desc The default postamble.
         */
        function f_poDefault() runs on ItsNt {
            //empty
            // Nothing to do
        }
        
    } // End of group postambles
@@ -397,8 +358,8 @@ module LibItsFntp_Functions {
        function f_acGenerateFntpNPDU(
            in template (value) PortNumber p_sourcePort, 
            in template (value) PortNumber p_destinationPort, 
            in template (value) LLserviceAddr p_insap_source_address, // TODO Rename in p_insap_source_address
            in template (value) LLserviceAddr p_insap_dest_address,  // TODO Rename in p_insap_dest_address
            in template (value) LLserviceAddr p_insap_source_address, 
            in template (value) LLserviceAddr p_insap_dest_address, 
            in FNTPhopCount p_hops 
        ) runs on ItsNt { 
            f_acTriggerEvent( 
@@ -853,6 +814,16 @@ module LibItsFntp_Functions {
            return PX_DEST_REMOTE_CIID_UC;
        }
        
        /**
         * @desc   Get the application port number, used instead of c_portDyn
         * @return The application port number, used instead of c_portDyn
         * @see PX_APP_PORT_NUMBER
         * @verdict Unchanged
         */
        function f_getIutAppPortValue() return PortNumber {
            return PX_APP_PORT_NUMBER;
        }
        
        /**
         * @desc    Get the source forwarding port
         * @return  The source forwarding port
@@ -879,20 +850,10 @@ module LibItsFntp_Functions {
         * @see     PX_LOCAL_PORT_NUMBER
         * @verdict Unchanged
         */
        function f_getIutLocalPortNumber() return PortNumber {
        function f_getIutLocalPortNumberValue() return PortNumber {
            return PX_LOCAL_PORT_NUMBER;
        }
        
        /**
         * @desc    Get the remote port number, i.e. the local endpoint
         * @return  The remote port number
         * @see     PX_REMOTE_PORT_NUMBER
         * @verdict Unchanged
         */
        function f_getIutRemotePortNumber() return PortNumber {
            return PX_REMOTE_PORT_NUMBER;
        }
        
        /**
         * @desc    Get the remote identifier of the VCI for broadcast on ITS-S host
         * @return  The remote identifier of the VCI for broadcast on ITS-S host
@@ -920,7 +881,7 @@ module LibItsFntp_Functions {
         * @return TODO
         * @verdict Unchanged
         */
        function f_getIutLinkId_BC_WithSecondScuId() return Link_ID {
        function f_getIutLinkId_BC_Router() return Link_ID {
            return PX_LINK_ID_BC_WITH_SECOND_SCU_ID;
        }
        
@@ -957,8 +918,17 @@ module LibItsFntp_Functions {
         * @return TODO
         * @verdict Unchanged
         */
        function f_getIutLinkId_UNKWNON() return Link_ID {
            return PX_LINK_ID_UNKWNON;
        function f_getIutLinkId_UNKWNON_BC() return Link_ID {
            return PX_LINK_ID_UNKWNON_BC;
        }
        
        /**
         * @desc   TODO
         * @return TODO
         * @verdict Unchanged
         */
        function f_getIutLinkId_UNKWNON_UC() return Link_ID {
            return PX_LINK_ID_UNKWNON_UC;
        }
        
        /**
@@ -993,11 +963,11 @@ module LibItsFntp_Functions {
        /**
         * @desc    Get the ITS-SP payload EPDU
         * @return  The ITS-SP payload EPDU
         * @see     PX_ITS_SP_PAYLOAD_EPDU
         * @see     PX_ITS_FPDU
         * @verdict Unchanged
         */
        function f_getIutItsSpPayloadEPDU() return ITSfpdu { 
            return PX_ITS_SP_PAYLOAD_EPDU;
        function f_getIutItsFPDU() return ITSfpdu { 
            return PX_ITS_FPDU;
        }
        
        /**
@@ -1069,19 +1039,25 @@ module LibItsFntp_Functions {
        }
        
        /**
         * @desc    Get the remote port number value, in an integer format
         * @return  The remote port number value, in an integer format
         * @desc    Get the remote port number value
         * @return  The remote port number value
         * @see     PX_REMOTE_PORT_NUMBER
         * @verdict Unchanged
         */
        function f_getIutRemotePortNumberValue() return integer {
            if (ischosen(PX_REMOTE_PORT_NUMBER.portShort)) {
                return PX_REMOTE_PORT_NUMBER.portShort;
            } else {
                return PX_REMOTE_PORT_NUMBER.portLong;
            }
        function f_getIutRemotePortNumberValue() return PortNumber {
            return PX_REMOTE_PORT_NUMBER;
        } // End of function f_getIutRemotePortNumberValue
        
        /**
         * @desc    Get the second remote port number value
         * @return  The second remote port number value
         * @see     PX_SECOND_REMOTE_PORT_NUMBER
         * @verdict Unchanged
         */
        function f_getIutSecondRemotePortNumberValue() return PortNumber {
            return PX_SECOND_REMOTE_PORT_NUMBER;
        } // End of function f_getIutSecondRemotePortNumberValue
        
    } // End of group iutFunctions
    
    group fntpAltsteps {
@@ -1095,6 +1071,7 @@ module LibItsFntp_Functions {
//                log("*** a_fntpDefault: INFO: IN-UNITDATA.request received in default ***");
//                repeat;
//            }
// FIXME Add support of response to NF-FNTP-PORT.confirm & NF-FNTP-COMM.confirm
            [] fntpPort.receive {
                log("*** a_fntpDefault: INFO: Unkown FNTP NDPU received in default ***");
                repeat;
@@ -1103,7 +1080,7 @@ module LibItsFntp_Functions {
                log("*** a_fntpDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***");
                f_selfOrClientSyncAndVerdict("error", e_timeout);
            }
            [] tc_ac.timeout {
            [] tc_ac.timeout { // For security because it should be done in main altsetp bloc
                log("*** a_fntpDefault: ERROR: Timeout while awaiting the reception of a message ***");
                f_selfOrClientSyncAndVerdict("error", e_timeout);
            }
+0 −6
Original line number Diff line number Diff line
@@ -62,12 +62,6 @@ module LibItsFntp_Pics {
         */
        modulepar boolean PICS_15628 := false;
        
        /**
         * @desc Is IUT support FSAP?
         * @see  ETSI TS 102 868-1 v1.1.1 B.5/3
         */
        modulepar boolean PICS_FSAP := false;
        
    } // End of group fntpPics

} // End of module LibItsFntp_Pics
 No newline at end of file
+31 −49
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ module LibItsFntp_Pixits {
         * @desc ITS-SP payload EPDU
         * For instance, a DENM messages associated to a Slow vehicle in ASN.1 PER encoding
         */
        modulepar ITSfpdu PX_ITS_SP_PAYLOAD_EPDU := '00010134fb9f45cb400001246000dfe0269f7405c100003e002d80000000000000000013880000007ffd00a0000000400000000013880085a80000001000000000000000ff000800000134fb9f45cb'O;
        modulepar ITSfpdu PX_ITS_FPDU := '00010134fb9f45cb400001246000dfe0269f7405c100003e002d80000000000000000013880000007ffd00a0000000400000000013880085a80000001000000000000000ff000800000134fb9f45cb'O;
         
        /**
         * @desc The user priority as specified in ISO 21218
@@ -90,6 +90,11 @@ module LibItsFntp_Pixits {
         */
        modulepar EUI64 PX_SRC_LOCAL_CIID := '0000000000000000'O; 
        
        /**
         * @desc TODO
         */
        modulepar EUI64 PX_SRC_LOCAL_CIID_UNKNOWN := 'DEADBEEFDEADBABE'O;
        
        /**
         * @desc Identifies a different VCI on ITS-S host/router only 
         * @see ISO 21218 - Clause 6.2 Link Identifier 
@@ -179,22 +184,6 @@ module LibItsFntp_Pixits {
            localCIID := PX_SRC_DIFFERENT_LOCAL_CIID
        }
        
//        /**
//         * @desc Identify a third VCI to be used to transmit the packet, i.e. the peer station, for Broadcast
//         */
//        modulepar Link_ID PX_LINK_ID_BC_WITH_THIRD_SCU_ID := {
//            remoteCIID := PX_REMOTE_MAC_BC,
//            localCIID := '010203040506070B'O
//        }
//        
//        /**
//         * @desc Identify a fourth VCI to be used to transmit the packet, i.e. the peer station, for Broadcast
//         */
//        modulepar Link_ID PX_LINK_ID_BC_WITH_FOURTH_SCU_ID := {
//            remoteCIID := PX_REMOTE_MAC_BC,
//            localCIID := '010203040506070C'O
//        }
//        
        /**
         * @desc Identify the VCI to be used to transmit the packet, i.e. the peer station, for Multicast
         */
@@ -204,11 +193,19 @@ module LibItsFntp_Pixits {
        }
        
        /**
         * @desc Identify an unknown VCI to be used to transmit the packet, i.e. the peer station, for Multicast
         * @desc Identify an unknown VCI to be used to transmit the packet, i.e. the peer station, for Broadcast
         */
        modulepar Link_ID PX_LINK_ID_UNKWNON_BC := {
            remoteCIID := PX_SRC_REMOTE_CIID_BC,
            localCIID := PX_SRC_LOCAL_CIID_UNKNOWN
        }
        
        /**
         * @desc Identify an unknown VCI to be used to transmit the packet, i.e. the peer station, for Unicast
         */
        modulepar Link_ID PX_LINK_ID_UNKWNON := {
        modulepar Link_ID PX_LINK_ID_UNKWNON_UC := {
            remoteCIID := PX_SRC_REMOTE_CIID_UC,
            localCIID := 'DEADBEEFDEADBABE'O
            localCIID := PX_SRC_LOCAL_CIID_UNKNOWN
        }
        
        /**
@@ -219,31 +216,10 @@ module LibItsFntp_Pixits {
            localCIID := PX_SRC_LOCAL_CIID
        }
        
//        /**
//         * @desc Identify the Link-ID VCI for ITS-S router only configuration
//         */
//        modulepar Link_ID PX_REMOTE_ROUTER_LINK_ID := { 
//            remoteCIID := '0000000E0E0E0E0E'O,
//            localCIID := '0000000E0E0E0E0F'O
//        }
//        
//        /**
//         * @desc Identify the Link-ID VCI for ITS-S combined host/router configuration
//         */
//        modulepar Link_ID PX_ROUTER_LINK_ID := { 
//            remoteCIID := '0000000000000000'O,
//            localCIID := '0000000000000000'O
//        }
        
    } // End of group linkIDs
    
    group stationIDs {
        
//        /**
//         * @desc Local station ID
//         */
//        modulepar StationID PX_STATION_ID := '11111111'O;
//        
        /**
         * @desc Unknwon remote station ID
         */
@@ -253,6 +229,11 @@ module LibItsFntp_Pixits {
    
    group portNumbers {
        
        /**
         * @desc Indicate the application port number, used instead of c_portDyn
         */
        modulepar PortNumber PX_APP_PORT_NUMBER := { portLong := 12345 } ;
        
        /**
         * @desc Indicate the source port number, i.e. the local endpoint
         */
@@ -263,6 +244,11 @@ module LibItsFntp_Pixits {
         */
        modulepar PortNumber PX_REMOTE_PORT_NUMBER := { portLong := 5556 } ;
        
        /**
         * @desc Indicate a second destination port number
         */
        modulepar PortNumber PX_SECOND_REMOTE_PORT_NUMBER := { portLong := 5556 } ;
        
        /**
         * @desc Indicate an unknown destination port number
         */
@@ -291,14 +277,6 @@ module LibItsFntp_Pixits {
        
    } // End of group portNumbers
    
    group invalidControlField {
        
        /**
         * @desc TODO
         */
        modulepar FNTPlpp PX_LPP := 'CAFEDECA'O;
    }
    
    group hopsConstants {
        
        /**
@@ -331,4 +309,8 @@ module LibItsFntp_Pixits {
        
    } // End of group cipConstants
    
    /**
     * Wait until the IUT is in a stable situation (beaconing...)
     */
    modulepar float PX_WAIT_FOR_IUT_READY := 1.0;
} // End of module LibItsFntp_Pixits
 No newline at end of file
+55 −30

File changed.

Preview size limit exceeded, changes collapsed.

+15 −2
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@ module LibItsFsap_Functions {
        type
            ITS_scuId//, ApplicationID, 
    };
    import from CALMiitsscu language "ASN.1:1997" {
        type 
            ITS_SCUtype 
    };
    import from CALMfsap language "ASN.1:1997" {
        type
            GCschedule, ServiceDataReg
@@ -35,7 +39,7 @@ module LibItsFsap_Functions {
    import from LibItsFsap_Pics all;
    import from LibItsCommon_Functions {
        function
            f_utInitializeIut, f_utCommandRequest
            f_utInitializeIut, f_utCommandRequestConfirm
    };
    import from LibItsFntp_Templates all;
    import from LibIts_Interface {
@@ -194,7 +198,16 @@ module LibItsFsap_Functions {
            return PX_LOCAL_ITS_SCU_ID;
        }
        
        
        /**
         * @desc Gets the type ITS scuID
         * @return  The type ITS scuID
         * @see PX_LOCAL_ITS_TYPE 
         * @verdict Unchanged 
         * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment
         */
        function f_getIutLocalITSType() return ITS_SCUtype {
            return PX_LOCAL_ITS_TYPE;
        }
        
//        /**
//         * @desc Gets the SAM retransmit timer.
Loading