Commit c5147724 authored by garciay's avatar garciay
Browse files

Implement FSAP TSS&TPs, Clause 9.1.3, 9.2.1 & 9.2.2

parent 6c8c034c
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -95,10 +95,16 @@ module LibItsFntp_Templates {
                } // End of template m_fntpImPrimitiveReq
                
                /**
                 * @desc The IN-SAP address for FNTP
                 * @desc Send template for IN-SAP address
                 * @see ISO/CD 21218 - Table 5 — Addresses for the Link Service Access Point (IN-SAP)
                 */
                template (value) IN_SAPaddress mw_fntpInSapAddress_src_command := 186; //oct2int('BA'O);
                template (value) IN_SAPaddress m_fntpInSapAddress_src_command := 186; //oct2int('BA'O);
                
                /**
                 * @desc Receive template for IN-SAP address
                 * @see ISO/CD 21218 - Table 5 — Addresses for the Link Service Access Point (IN-SAP)
                 */
                template (value) IN_SAPaddress mw_fntpInSapAddress_src_command := m_fntpInSapAddress_src_command; 
                
                /**
                 * @desc  Receive template for IN-UNITDATA.request SAP primitive
+78 −3
Original line number Diff line number Diff line
@@ -13,6 +13,9 @@ module LibItsFsap_Functions {
    };
    
    // LibIts
    import from CITSapplMgmtApplReg language "ASN.1:1997" {
        type ITSaid 
    };
    import from CALMllsap language "ASN.1:1997" { 
        type EUI64 
    }; 
@@ -27,7 +30,7 @@ module LibItsFsap_Functions {
    };
    import from CALMfsap language "ASN.1:1997" {
        type
            GCschedule, ServiceDataReg
            GCschedule, ServiceDataReg, ServiceList 
    };
    import from CALMmsap language "ASN.1:1997" {
        type CommandRef
@@ -255,7 +258,7 @@ module LibItsFsap_Functions {
        }
        
        /**
         * @desc    Get the ITS application object ID (ITS-AID)
         * @desc    Get the ITS application object ID (ITS-AID) for GCregServer MF-REQUEST 
         * @return  The ITS application object ID (ITS-AID)
         * @see     PX_APPLICATION_ID
         */
@@ -264,8 +267,35 @@ module LibItsFsap_Functions {
        }
        
        /**
         * @desc    Get the client identifier value
         * @desc    Get the ITS application object ID (ITS-AID) for GCregClient MF-REQUEST 
         * @return  The ITS application object ID (ITS-AID)
         * @see     PX_CLIENT_APPLICATION_ID
         */
        function f_getIutClientApplicationID() return ApplicationID {
            return PX_CLIENT_APPLICATION_ID;
        }
        
        /**
         * @desc    Get the globally unique ITS-AID of the ITS-S application 
         * @return  The globally unique ITS-AID of the ITS-S application
         * @see     PX_ITS_AID
         */
        function f_getIutServiceID() return ITSaid {
            return PX_ITS_AID;
        }
        
        /**
         * @desc    Get the server identifier value
         * @return  The client identifier value
         * @see     PX_SERVER_ID
         */
        function f_getIutServerID() return StationID {
            return PX_SERVER_ID;
        }
        
        /**
         * @desc    Get the service client ITS station value
         * @return  The service client ITS station value
         * @see     PX_CLIENT_ID
         */
        function f_getIutClientID() return StationID {
@@ -325,6 +355,51 @@ module LibItsFsap_Functions {
            return PX_SERVICE_DATA_REG_WITH_SESSION_PHASE;
        }
        
        /**
         * @desc    TODO
         * @return  TODO
         * @see     PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL
         */
        function f_getIutServicelistWithNoSessionAndNoChangeChannel() return ServiceList { 
            return { PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL };
        }
        
        /**
         * @desc    TODO
         * @return  TODO
         * @see     PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL
         */
        function f_getIutServicelistWithSessionAndNoChangeChannel() return ServiceList { 
            return { PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL };
        }
        
        /**
         * @desc    TODO
         * @return  TODO
         * @see     PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANGE_CHANNEL
         */
        function f_getIutServicelistWithSessionAndChangeChannel() return ServiceList { 
            return { PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANGE_CHANNEL };
        }
        
        /**
         * @desc    TODO
         * @return  TODO
         * @see     PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID
         */
        function f_getIutServicelistWithUnknownServiceID() return ServiceList { 
            return { PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID };
        }
        
        /**
         * @desc    TODO
         * @return  TODO
         * @see     PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL
         */
        function f_getIutServicelistWithUnknownChannel() return ServiceList { 
            return { PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL };
        }
        
    } // End of group iutFunctions
    
    group fsapAltsteps {
+104 −5
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ module LibItsFsap_Pixits {
        type 
            FmtID, VersionFSAP, 
            ApplicationID, 
            GCsched, ServiceDataReg 
            GCsched, NonipService, ServiceDataReg 
    };
    import from CALMfntp language "ASN.1:1997" {
        type 
@@ -55,18 +55,45 @@ module LibItsFsap_Pixits {
        
    } // End of group local
    
    group CRegServer {
    group cRegServer {
        
        /**
         * @desc The service provider ITS station,
         */
        modulepar StationID PX_SERVER_ID := '00000000'O;
        
        /**
         * @desc The service client ITS station,
         */
        modulepar StationID PX_CLIENT_ID := '00000000'O;
        
        /**
         * @desc The globally unique ITS-AID of the ITS-S application
         */
        modulepar ITSaid PX_ITS_AID := { content := 0 }
        
        /**
         * @desc An unknown ITS-AID of the ITS-S application
         */
        modulepar ITSaid PX_UNKNOWN_ITS_AID := { content := 126 }
        
        /**
         * @desc    TODO
         */
        modulepar PortNumber PX_SESSION_PORT := { portLong := 1234 }
        
        /**
         * @desc    TODO
         */
        modulepar PortNumber PX_NO_SESSION_PORT := { portLong := c_portNon }
        
        /**
         * @desc    ITS application object ID (ITS-AID) 
         * @desc    TODO
         */
        modulepar PortNumber PX_UNKNOWN_SESSION_PORT := { portLong := 1234 }
        
        /**
         * @desc    ITS application object ID (ITS-AID) for GCregServer MF-REQUEST 
         * @see     ISO EN 17419
         */
        modulepar ApplicationID PX_APPLICATION_ID := {
@@ -74,6 +101,15 @@ module LibItsFsap_Pixits {
            seqNumber := 1
        }
        
        /**
         * @desc    ITS application object ID (ITS-AID) for GCregClient MF-REQUEST 
         * @see     ISO EN 17419
         */
        modulepar ApplicationID PX_CLIENT_APPLICATION_ID := {
            hostITS_scuId := 2,
            seqNumber := 2
        }
        
        /**
         * @desc    Scheduling information for registration / registration request in order to select the proper VCI in the ITS-station for communication
         * 'medium' field indicates a request of specific access technology
@@ -167,17 +203,80 @@ module LibItsFsap_Pixits {
            } // End of field 'datareg'
        } // End of modulepar PX_SERVICE_DATA_REG_WITH_SESSION_PHASE_AND_CHANGE_CHANNEL
        
    } // End of group CRegServer
    } // End of group cRegServer
    
    group sam_ {
        
        /**
         * @desc    TODO 
         */
        modulepar NonipService PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL := {
            serviceID := PX_ITS_AID,
            serviceData := ''O,
            serverPort := PX_NO_SESSION_PORT,
            sessionChannel := 0
        } // End of modulepar PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL
        
        /**
         * @desc    TODO 
         */
        modulepar NonipService PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL := {
            serviceID := PX_ITS_AID,
            serviceData := ''O,
            serverPort := PX_SESSION_PORT,
            sessionChannel := 0
        } // End of modulepar PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL
        
        /**
         * @desc    TODO 
         */
        modulepar NonipService PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANGE_CHANNEL := {
            serviceID := PX_ITS_AID,
            serviceData := ''O,
            serverPort := PX_SESSION_PORT,
            sessionChannel := 1
        } // End of modulepar PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANGE_CHANNEL
        
        /**
         * @desc    TODO 
         */
        modulepar NonipService PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID := {
            serviceID := PX_UNKNOWN_ITS_AID,
            serviceData := ''O,
            serverPort := PX_SESSION_PORT,
            sessionChannel := 1
        } // End of modulepar PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID
        
        /**
         * @desc    TODO 
         */
        modulepar NonipService PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL := {
            serviceID := PX_ITS_AID,
            serviceData := ''O,
            serverPort := PX_UNKNOWN_SESSION_PORT,
            sessionChannel := 1
        } // End of modulepar PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL
        
    } // End of group sam_
    
    /**
     * Wait until the IUT is in a stable situation (beaconing...)
     */
    modulepar float PX_WAIT_FOR_IUT_READY := 1.0;
    
    /**
     * @desc    TODO
     */
    modulepar FmtID PX_FMTID_SAM := 0; // TODO Use CLAMfsap.FmtID_sam_
    
    /**
     * @desc    TODO
     */
    modulepar FmtID PX_FMTID_CTX := 1; // TODO Use CLAMfsap.FmtID_ctx_
    
    /**
     * @desc    TODO
     */
    modulepar VersionFSAP PX_VERSION_FSAP := 0;
    
} // End of module LibItsFsap_Pixits
 No newline at end of file
+165 −63
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ module LibItsFsap_Templates {
    };
    import from CALMmsap language "ASN.1:1997" {
        type 
            MF_Command, 
            MF_Command, MF_Command_confirm, 
            MF_Request_request, MF_Request 
    };
    import from CALMllsap language "ASN.1:1997" { 
@@ -33,14 +33,18 @@ module LibItsFsap_Templates {
        type 
            ApplicationID, 
            GCctxTxCmd,  GCregServer, GCregClient, GCderegClient, GCschedule, 
            ServiceDataReg, ServiceData, ContextData, 
            ServiceDataReg, ServiceData, ContextData, ServiceList, ServiceInfo, 
            NonipContext, 
            SAMserviceData, CTXserviceData, 
            SAM, SAMrxNot, 
            CTX, CTXrxNot 
    };
    import from LibItsFntp_Templates {
        template m_fntpInSapAddress_src_command
    };
    import from LibItsFsap_Pixits {
        modulepar 
            PX_FMTID_CTX, PX_VERSION_FSAP, 
            PX_FMTID_CTX, PX_VERSION_FSAP, PX_FMTID_SAM, 
            PX_USER_PRIORITY
    };
    import from LibItsCommon_TypesAndValues {
@@ -122,7 +126,7 @@ module LibItsFsap_Templates {
                            gCschedule := p_gCschedule,
                            priority := PX_USER_PRIORITY,
                            serviceDataReg := p_serviceDataReg
                        } //  // End of field 'gCregServer'
                        } // End of field 'gCregServer'
                    } // End of field 'mfReq'
                } // End of template m_mfRequest_GCregServer
                
@@ -160,7 +164,7 @@ module LibItsFsap_Templates {
                 * 
                 @see ISO/CD 24102-5 Clause 8.5
                 */
                template (value) MF_Request m_mfRequest_GCregClient(
                template (value) MF_Request m_mfRequest_GCregClientWithNoSessionAndNoCTX(
                    in template (value) ApplicationID p_applicationID,
                    in template (value) ITSaid p_serviceID
                ) := {
@@ -173,7 +177,22 @@ module LibItsFsap_Templates {
                            contextData := ''O
                        } // End of field 'gCregClient'
                    } // End of field 'mfReq'
                } // End of template m_mfRequest_GCregServer
                } // End of template m_mfRequest_GCregClientWithNoSessionAndNoCTX
                
                template (value) MF_Request m_mfRequest_GCregClientWithSessionAndCTX(
                    in template (value) ApplicationID p_applicationID,
                    in template (value) ITSaid p_serviceID
                ) := {
                    fill := '0000'B,
                    mfReq := {
                        gCregClient := {
                            applicationID := p_applicationID,
                            priority := PX_USER_PRIORITY,
                            serviceID := p_serviceID,
                            contextData := ''O
                        } // End of field 'gCregClient'
                    } // End of field 'mfReq'
                } // End of template m_mfRequest_GCregClientWithSessionAndCTX
                
            } // End of group send_
            
@@ -256,37 +275,42 @@ module LibItsFsap_Templates {
            
            group send_ {
                
//                template (value) SAMrxNot m_sAMrxNot(
//                    in template (value) IN_SAPaddress p_csap,
//                    in template (value) Link_ID p_linkID,
//                    in template (value) StationID p_serverID
//                ) := {
//                    link := {
//                        csap := p_csap,
//                        linkID := p_linkID
//                    },
//                    sam := {
//                        fmtID := 0, // FIXME Use PIXIT PX_FMTID_CTX
//                        version := 0, // FIXME Use PIXIT PX_VERSIONFSAP
//                        serverID := p_serverID,
//                        serviceList := { },
//                        channelList := { },
//                        ipServList := { }
//                    }
//                } // End of template m_sAMrxNot
//                
                template (value) MF_Request m_mfRequest_SAMrxNot( 
                    in template (value) LLserviceAddr p_link, 
                    in template (value) StationID p_serverID, 
                    in template (value) ServiceList p_serviceList 
                ) := {
                    fill := '0000'B,
                    mfReq := {
                        sAMrxNot := {
                            link := p_link,
                            sam := {
                                fmtID := PX_FMTID_SAM, 
                                version := PX_VERSION_FSAP, 
                                serverID := p_serverID,
                                serviceList := p_serviceList,
                                channelList := { },
                                ipServList := { }
                            } // End of field 'sam'
                        } // End of field 'sAMrxNot'
                    } // End of field 'mfReq'
                } // End of template m_mfRequest_SAMrxNot
                
            } // End of group send_
            
            group recv_ {
                
                /**
                 * @desc 
                 * @desc    TODO
                 */
                template (present) MF_Command mw_mfCommand_any := {
                    fill := ?,
                    mfCmd := ?
                } // End of template mw_mfCommand_any
                
                /**
                 * @desc    TODO
                 */
                template (present) MF_Command mdw_mfCommand_gCSAM(
                    in template (present) ApplicationID p_applicationID,
                    in template (present) StationID p_serverID,
@@ -301,20 +325,26 @@ module LibItsFsap_Templates {
                    } // End of header 'mfCmd'
                } // End of template mw_mfCommand_gCSAM
                
                template (present) MF_Command mdw_mfCommand_gCctx( 
                /**
                 * @desc    TODO
                 */
                template (present) MF_Command mdw_mfCommand_gCSAMctx(
                    in template (present) ApplicationID p_applicationID,
                    in template (present) StationID p_clientID, 
                    in template (present) CTXserviceData p_serviceContext 
                    in template (present) StationID p_serverID,
                    in template (present) ServiceInfo p_serviceInfo
                ) modifies mw_mfCommand_any := {
                    mfCmd := {
                        gCctx := {
                        gCsamctx := {
                            applicationID := p_applicationID,
                            clientID := p_clientID, 
                            serviceContext := p_serviceContext 
                        } // End of header 'gCctx'
                            serverID := p_serverID,
                            serviceInfo := p_serviceInfo
                        } // End of header 'gCsam'
                    } // End of header 'mfCmd'
                } // End of template mw_mfCommand_gCctx 
                } // End of template mdw_mfCommand_gCSAMctx
                
                /**
                 * @desc    TODO
                 */
                template (present) SAMserviceData mw_samDataServerciceWithAccessTechAndNonIP( 
                    in template (present) ITSaid p_serviceID, 
                    in template (present) ServiceData p_serviceData, 
@@ -330,25 +360,6 @@ module LibItsFsap_Templates {
                    } // End of field 'servData'
                } // End of template mw_samDataServerciceWithAccessTechAndNonIP
                
                template (present) CTXserviceData mw_ctxDataServercice_any := {
                    fill := ?,
                    servData := ?
                } // End of template mw_ctxDataServercice_any
                
                template (present) CTXserviceData mdw_ctxServiceDataNonIP(
                    in template (present) ITSaid p_serviceID,
                    in template (present) ContextData p_contextData,
                    in template (present) PortNumber p_userPort
                ) modifies mw_ctxDataServercice_any := {
                    servData := {
                        nonipContext := {
                            serviceID := p_serviceID,
                            contextData := p_contextData,
                            userPort := p_userPort
                        } // End of field 'nonipService'
                    } // End of field 'servData'
                } // End of template mdw_ctxServiceDataNonIP
                 
//                template SAMrxNot mw_sAMrxNot(
//                    in template (present) IN_SAPaddress p_csap,
//                    in template (present) Link_ID p_linkID,
@@ -397,6 +408,9 @@ module LibItsFsap_Templates {
                    } // End of field 'mfReq'
                } // End of template m_mfRequest_ctx
                
                /**
                 * @desc    TODO
                 */
                template (value) CTX m_ctx(
                    in template (value) StationID p_clientID
                ) := {
@@ -463,14 +477,102 @@ module LibItsFsap_Templates {
            
            group recv_ {
                
                template (present) CTXrxNot mw_ctxRxNotify( 
                /**
                 * @desc    TODO
                 */
                template (present) MF_Command mdw_mfCommand_gCctx( 
                    in template (present) ApplicationID p_applicationID, 
                    in template (present) StationID p_clientID, 
                    in template (present) CTXserviceData p_serviceContext 
                ) modifies mw_mfCommand_any := { 
                    mfCmd := {
                        gCctx := {
                            applicationID := p_applicationID, 
                            clientID := p_clientID, 
                            serviceContext := p_serviceContext 
                        } // End of header 'gCctx'
                    } // End of header 'mfCmd'
                } // End of template mw_mfCommand_gCctx 
                
                /**
                 * @desc    TODO
                 */
                template (present) MF_Command mw_mfCommand_gCctxTxCmd( 
                    in template (present) CALMllsap.LLserviceAddr p_link,
                    in template (present) CTX p_ctx
                ) := {
                ) modifies mw_mfCommand_any := {
                    mfCmd := {
                        gCctxTxCmd := {
                            link := p_link,
                            ctx := p_ctx
                } // End of template mw_ctxRxNotify
                        } // End of header 'gCctxTxCmd'
                    } // End of header 'mfCmd'
                } // End of template mw_mfCommand_gCctxTxCmd
                
                /**
                 * @desc    TODO
                 */
                template (present) CTX mw_ctx_any := {
                    fmtID := PX_FMTID_CTX, 
                    version := PX_VERSION_FSAP, 
                    clientID := ?,
                    servContextList := ?,
                    ipContextList := ?
                } // End of template mw_ctx_any
                
                /**
                 * @desc    TODO
                 */
                template (present) CTX mw_ctx_NonipContext( 
                    in template (present) NonipContext p_servContext 
                ) modifies mw_ctx_any := { 
                    servContextList := superset(p_servContext) 
                } // End of template mw_ctx_NonipContext
                
                /**
                 * @desc    TODO
                 */
                template (present) NonipContext mw_nonipContext( 
                    in template (present) ITSaid p_serviceID, 
                    in template (present) PortNumber p_userPort 
                ) := { 
                    serviceID := p_serviceID, 
                    contextData := ?, 
                    userPort := p_userPort 
                } // End of template mw_nonipContext 
                
//                template (present) CTXrxNot mw_ctxRxNotify( 
//                    in template (present) CALMllsap.LLserviceAddr p_link,
//                    in template (present) CTX p_ctx
//                ) := {
//                    link := p_link,
//                    ctx := p_ctx
//                } // End of template mw_ctxRxNotify
                
                /**
                 * @desc    TODO
                 */
                template (present) CTXserviceData mw_ctxDataServercice_any := {
                    fill := ?,
                    servData := ?
                } // End of template mw_ctxDataServercice_any
                
                /**
                 * @desc    TODO
                 */
                template (present) CTXserviceData mdw_ctxServiceDataNonIP(
                    in template (present) ITSaid p_serviceID,
                    in template (present) ContextData p_contextData,
                    in template (present) PortNumber p_userPort
                ) modifies mw_ctxDataServercice_any := {
                    servData := {
                        nonipContext := {
                            serviceID := p_serviceID,
                            contextData := p_contextData,
                            userPort := p_userPort
                        } // End of field 'nonipService'
                    } // End of field 'servData'
                } // End of template mdw_ctxServiceDataNonIP
                 
//                /**
//                 * @desc  Confirmation of Service context message transmission
+64 −42

File changed.

Preview size limit exceeded, changes collapsed.

Loading