LibItsBtp_TypesAndValues.ttcn 5.81 KB
Newer Older
/**
 *  @author   ETSI / STF405
 *  @version  $URL$
 *            $Id$
 *  @desc     Module containing types and values for Basic Transport Protocol
garciay's avatar
garciay committed
 *  @copyright   ETSI Copyright Notification
 *               No part may be reproduced except as authorized by written permission.
 *               The copyright and the foregoing restriction extend to reproduction in all media.
 *               All rights reserved.
 *
 */
module LibItsBtp_TypesAndValues {

    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    
    // LibIts
garciay's avatar
garciay committed
    import from CAM_PDU_Descriptions language "ASN.1:1997" all;
    import from DENM_PDU_Descriptions language "ASN.1:1997" all;
    import from MAPEM_PDU_Descriptions language "ASN.1:1997" all;
    import from SPATEM_PDU_Descriptions language "ASN.1:1997" all;
    import from IVIM_PDU_Descriptions language "ASN.1:1997" all;
    import from SREM_PDU_Descriptions language "ASN.1:1997" all;
    import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
    
    group btpPdus {
     
        /**
         * @desc BTP Packet
         * @see ETSI TS 102 636-5-1 chapter 6
         * @member header
         * @member payload
         */
        type record BtpPacket {
            BtpHeader      header,
            BtpPayload     payload optional
        }
filatov's avatar
filatov committed
        with {
            encode "LibIts_Interface"
        }
        
    } // end btpPdus
    
    group btpHeaders {
        
        /**
         * @desc BTP Header
         * @see ETSI TS 102 636-5-1 chapter 7.1
         * @member btpAHeader
         * @member btpBHeader
         */
        type union BtpHeader {
            BtpAHeader btpAHeader,
            BtpBHeader btpBHeader 
        }

        /**
         * @desc BTP-A Header
         * @see ETSI TS 102 636-5-1 chapter 7.2
         * @member destinationPort
         * @member sourcePort
         */        
        type record BtpAHeader {
            BtpPortId destinationPort,
            BtpPortId sourcePort   
        } 

        /**
         * @desc BTP-B Header
         * @see ETSI TS 102 636-5-1 chapter 7.3
         * @member destinationPort
         * @member destinationPortInfo
         */        
        type record BtpBHeader {
            BtpPortId destinationPort,
            BtpPortInfo destinationPortInfo   
        }
        
        /**
         * @desc BTP Port ID
         * @see ETSI TS 102 636-5-1 chapter 7.3.2
         */ 
        type UInt16 BtpPortId;

        /**
         * @desc BTP-B Port info
         * @see ETSI TS 102 636-5-1 chapter 7.3.2
         */ 
        type UInt16 BtpPortInfo;
        
    } // end btpHeaders

    group btpPayload {
        
        type octetstring BtpRawPayload;
        
        /**
         * @desc The payload of the BTP packet
         * @member decodedPayload The decoded payload
         * @member rawPayload Raw payload as it is received
         */
        type record BtpPayload {
            DecodedBtpPayload decodedPayload optional,
            BtpRawPayload rawPayload
        }
filatov's avatar
filatov committed
        with {
	        encode "LibItsBtp_BtpPayload"
        }
        
        /**
         * @desc The decoded payload of the BTP packet
         * @member camPacket The CAM packet
         * @member denmPacket The DENM packet
         * @member mapemPacket
         * @member spatemPacket
         * @member ivimPacket
         * @member sremPacket
         * @member seemPacket
         */
        type union DecodedBtpPayload {
            CAM     camPacket, 
            DENM    denmPacket, 
            MAPEM   mapemPacket, 
            SPATEM  spatemPacket, 
            IVIM    ivimPacket, 
            SREM    sremPacket, 
            SSEM    ssemPacket  
        } with { 
filatov's avatar
filatov committed
            encode (camPacket) "PER"; 
            encode (denmPacket) "PER"; 
            encode (mapemPacket) "PER"; 
            encode (spatemPacket) "PER"; 
            encode (ivimPacket) "PER"; 
            encode (sremPacket) "PER"; 
            encode (ssemPacket) "PER" 
        }
        
    } //end btpPayload

    group utPrimitives {
        
        group utCommonPrimitives {
            
            /**
             * @desc    UT primitives for BTP
             * @member  btpA      -
             * @member  btpB    -
            type union UtBtpTrigger {
                GenerateBtpA btpA,
                GenerateBtpB btpB
//FIXME RGY As discussed, boolean results are replaced by a union of the results
//            type boolean UtBtpTriggerResult;
            type union UtBtpResults {
              boolean utBtpTriggerResult
            }
            type UtBtpResults.utBtpTriggerResult UtBtpTriggerResult;
             * @desc Upper Tester message to request triggering of an BTPA message at IUT 
            type record GenerateBtpA {
                BtpAHeader btpAHeader
             * @desc Upper Tester message to request triggering of an BTPB message at IUT 
            type record GenerateBtpB {
                BtpBHeader btpBHeader
             * @desc Upper Tester message to check event/status on BTP IUT 
            type record UtBtpEventInd {
                BtpRawPayload rawPayload
             * @desc List of Upper Tester messages to check event/status on CAM IUT 
            type record of UtBtpEventInd UtBtpEventIndList;
        }
//        with {
//            encode "LibItsCommon"
//        }
                
        
    } // end utPrimitives
    with {
        encode "UpperTester"
    }
    
}