///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2000-2019 Ericsson Telecom AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:               NAS_EPS_Test.ttcn
//  Rev:                <RnXnn>
//  Prodnr:             1/CNL 113 862
//  Contact:            http://ttcn.ericsson.se
//  Reference:          3GPP 24.301 v15.2.0 (24.008 v15.3.0, 24.011 v15.1.0, 24.161 v15.0.0 

module NAS_EPS_Test
{

import from NAS_EPS_Types all;

type component NAS_EPS_Test_CT { }


const PDU_NAS_EPS c_PDU_NAS_EPS_AttachAccept :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_AttachAccept := {
        securityHeaderType := '0000'B,
        messageType := '01000010'B,
        ePS_AttachResult := 
        {
          valueOfAttachResult := '111'B,
          spare := '0'B
        },
        spare := '0000'B,
        t3412 := {
          timerValue := '01111'B,
          unit := '001'B
        },
        tAI_List := 
        {
          lengthIndicator := 6,
          trackingAreaIdentityLists :=
          {
            {
              list01 :=
              {
                nrOfElements := 0, 
                typeOfList := '01'B,
                spare := '0'B,  //0
                mccDigit1 := '1'H,
                mccDigit2 := '2'H,
                mccDigit3 := '3'H,
                mncDigit3 := '4'H,
                mncDigit1 := '5'H,
                mncDigit2 := '6'H,  
                tAC1 := 'FFFF'O 
              }
            }
          }
        },
        eSM_MessageContainer :=
        {
          lengthIndicator := 10,
          content := 'AABBCCDDEE0011223344'O 
        },      
        gUTI := 
        { 
          elementIdentifier := '50'O,
          ePS_MobileIdentity := 
          {
            lengthIndicator := 11,
            ePS_MobileIdentity := 
            {
              typeOfIdentity := '110'B,
              oddEvenInd_identity := 
              {
                guti :=  
               {
                 oddevenIndicator := '0'B, 
                  spare := '1111'B,
                  mccDigit1 := '1'H,
                  mccDigit2 := '2'H,
                  mccDigit3 := '3'H,
                  mncDigit3 := '4'H,
                  mncDigit1 := '5'H,
                  mncDigit2 := '6'H,
                  mMEGI := 'AABB'O,
                  mMEC := 'FF'O,
                  mTMSI := 'AABBCCDD'O
                }
              }
            }        
          }
        },
        locationAreaIdentification := 
        {
          elementIdentifier := '13'O,
          mcc_mnc := '112233'O, 
          lac := 'BBBB'O
        },
        msIdentity := omit,
        eMMCause := omit,
        t3402 := omit,
        t3423 := omit,
        equivalentPLMNs := omit,
        emergencyNumberList := omit,
        ePS_NetworkFeatureSupport := omit,
        additionalUpdateResult := 
        {
          additionalUpdateResultValue := '11'B,
          spare := '00'B,
          elementIdentifier := '1111'B
        },
        t3412_Extended :=  
        {
          elementIdentifier := '5E'O,
          lengthIndicator := 1 , 
          gprsTimer3 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        }, 
        t3324 :=
        {
          elementIdentifier := '6A'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        extendedDRXParameters :=
        {
          elementIdentifier := '6E'O,
          lengthIndicator := 1,
          eDRXvalue := '0101'B,
          pagingTimeWindow := '0101'B
        },
        dNCID :=
        {
          elementIdentifier := '65'O,
          lengthIndicator := 2,
          dCNIDvalue := '1234'O
        },
        sMS_ServiceStatus :=
        {
          sMS_ServiceStatusValue := '001'B,
          spare := '0'B,
          elementIdentifier := '1110'B
        },
        non3GPP_NW_ProvidedPolicies :=
        {
          n3EN_Indicator := '1'B,
          spare := '000'B,
          elementIdentifier := '1101'B
        },
        t3448 := 
        {
          elementIdentifier := '6B'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        networkPolicy :=
        {
          redirPolicy := '1'B,
          spare := '000'B,
          elementIdentifier := '1100'B

        },
        t3447 := 
        {
          elementIdentifier := '6C'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        extendedEmergencyNumberList :=
        {
          elementIdentifier := 'FF'O,
          lengthIndicator := 4,
          extendedEmergencyNumberList :=
          {
            {
              lengthOfExtendedEmergencyNumber := 1,
              extendedEmergencyNumber := '01'O
            },
            {
              lengthOfExtendedEmergencyNumber := 1,
              extendedEmergencyNumber := '02'O
            }
          }
        }
      }
    }
  }
}

const PDU_NAS_EPS c_PDU_NAS_EPS_AttachReject :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_AttachReject := {
        securityHeaderType := '0000'B,
        messageType := '01000100'B,
        emmCause := 
        {
          causeValue := 'BB'O
        },
        eSM_MessageContainer := omit,
        t3346  := 
        {
          elementIdentifier := '5F'O,
          lengthIndicator := 1,
          gprsTimer2 := 
          {
            timerValue := '00000'B,
            unit := '011'B
          }    
        },
        t3402 := 
        {
          elementIdentifier := '16'O,
          lengthIndicator := 1,
          gprsTimer2 := 
          {
            timerValue := '11111'B,
            unit := '011'B            
          }            
        },
        extendedEmmCause :=
        {
          eUTRANallowedValue := '1'B,
          ePSoptimizationInfo := '0'B,
          spare := '00'B,
          elementIdentifier := '1010'B
        }
      }
    }
  }
}  

const PDU_NAS_EPS c_PDU_NAS_EPS_AttachRequest :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_AttachRequest := {
      securityHeaderType := '0000'B,
      messageType := '01000001'B,
      ePS_attachType :=   
        {
          typeOfAttach := '000'B,
          spare := '0'B
        }, 
        nasKeySetId :=
        {
          identifier := '111'B,
          tSC := '0'B     
        },
        ePSMobileId :=
        {
          lengthIndicator := 11,
          ePS_MobileIdentity :=
          {
            typeOfIdentity := '110'B,
            oddEvenInd_identity := 
            {
              guti :=  
              {
                oddevenIndicator := '0'B, 
                spare := '1111'B,
                mccDigit1 := '1'H,
                mccDigit2 := '2'H,
                mccDigit3 := '3'H,
                mncDigit3 := '4'H,
                mncDigit1 := '5'H,
                mncDigit2 := '6'H,
                mMEGI := 'AABB'O,
                mMEC := 'FF'O,
                mTMSI := 'AABBCCDD'O
              }
            }      
          }    
        },
        uENetworkCapability :=
        {
          lengthIndicator := 7,
          uENetworkCapabilityV := 
          {
            eEA := '00001111'B,
            eIA := '11110000'B,
            uEA := '00110011'B,  
            uIA := '0111110'B,  
            uCS2 := '0'B,  
            nF := '0'B,  
            vCC := '0'B,  
            lCS := '0'B,  
            lPP := '0'B,  
            aCC_CSFB := '0'B,
            h245_ASH := '0'B,
            proSe := '0'B,
            proSe_dd := '0'B,
            proSe_dc := '0'B,
            proSe_relay := '0'B, 
            cP_CIoT := '0'B,
            uP_CIoT := '0'B,
            s1_Udata := '0'B,
            eRwoPDN := '0'B,
            hC_CP_CIoT := '0'B,
            ePCO := '0'B,
            multipleDRB := '0'B,
            v2XPC5 := '0'B,
            restrictEC := '0'B,
            cPbackoff := '0'B,
            dCNR := '0'B,
            n1Mode := '0'B,
            sGC := '0'B,
            spare1 := '0'B,
            spare := omit
          }
        },
        eSM_MessageContainer := 
        {
          lengthIndicator := 2,
          content := 'FFFF'O    
        },
        old_P_TMSISignature := omit,
        additionalGUTI := omit,
        lastVisitedRegisteredTAI := omit,
        dRXParameter := omit,
        mSNetworkCapability := 
        {
          elementIdentifier := '31'O,
          mSNetworkCapabilityLV := 
          {
            lengthIndicator := 4,
            msNetworkCapabilityV :=
            {
              gea1bit := '0'B,
              smCapabilitiesviaDedicatedChannels := '0'B,
              smCapabilitiesviaGPRSChannels := '0'B,
              ucs2Support := '0'B,
              ssScreeningIndicator := '00'B,
              solSACapability := '0'B,
              revisionLevelIndicatior := '0'B,
              pFCFeatureMode := '0'B,
              extendedGEAbits := '000111'B,
              lcsVAcapability := '0'B,
              pSInterRATHOtoUTRANIuModeCapability := '0'B,
              pSInterRATHOtoEUTRANS1ModeCapability := '0'B,
              eMMCombinedProceduresCapability := '0'B,
              iSRSupport := '0'B,
              sRVCCtoGERANUTRANCapability := '0'B,
              epcCapability := '0'B,
              nFCapability := '0'B,
              gERANNwSharingCapability := '0'B,
              userPlaneIntegrityProtectionSupport := '0'B,
              gIA4 := '0'B,
              gIA5 := '0'B,
              gIA6 := '0'B,
              gIA7 := '0'B,
              ePCOIEIndicator := '0'B,
              restrictionOnUseOfEnhancedCoverageCapability := '0'B,
              dualConnectivityOfEUTRANwithNRCapability := '0'B,
              spare_octets := omit
            }
          }
        },
        oldLocationAreaIdentification := omit,
        tMSIStatusTV := omit,
        mobileStationClassmark2 := omit,
        mobileStationClassmark3 := omit,
        supportedCodecList := omit,
        additionalUpdateType := omit,
        voiceDomainPrefandUEsettings := omit,
        deviceProperties := 
        {
          lowPriority := '1'B,
          spare := '000'B,
          elementIdentifier := '1101'B    
        },
        oldGUTI_Type := 
        {
          gUTI_Type := '0'B,
          spare := '000'B,
          elementIdentifier  := '1110'B    
        },
        mS_NetworkFeatureSupport :=
        {
          extendedPeriodicTimers := '1'B,
          spare := '000'B,
          elementIdentifier := '1100'B    
        },
        tMSIBasedNRIContainer :=
        {
          elementIdentifier := '10'O,
          networkResourceIdentifierContainerLV := 
          {
            lengthIndicator := 2 , 
            networkResourceIdentifierContainerV :=
            {
              nRIContainerValue := '1111111111'B,
              spare := '000000'B
            }
          }
        },
        t3324 :=
        {
          elementIdentifier := '6A'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        t3412_Extended :=  
        {
          elementIdentifier := '5E'O,
          lengthIndicator := 1 , 
          gprsTimer3 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        extendedDRXParameters :=
        {
          elementIdentifier := '6E'O,
          lengthIndicator := 1,
          eDRXvalue := '0101'B,
          pagingTimeWindow := '0101'B
        },
        uEAdditionalSecurityCapability :=
        {
          elementIdentifier := '6F'O,
          lengthIndicator := 4,
          uEAdditionalSecurityCapabilityV :=
          {
            fiveG_eA7 := '0'B,    
            fiveG_eA6 := '0'B,    
            fiveG_eA5 := '0'B,    
            fiveG_eA4 := '0'B,    
            fiveG_eA3_128 := '0'B,    
            fiveG_eA2_128 := '0'B,    
            fiveG_eA1_128 := '0'B,    
            fiveG_eA0 := '0'B,    
            fiveG_eA15 := '0'B,    
            fiveG_eA14 := '0'B,    
            fiveG_eA13 := '0'B,    
            fiveG_eA12 := '0'B,    
            fiveG_eA11 := '0'B,    
            fiveG_eA10 := '0'B,    
            fiveG_eA9 := '0'B,    
            fiveG_eA8 := '0'B,    
            fiveG_iA7 := '0'B,    
            fiveG_iA6 := '0'B,    
            fiveG_iA5 := '0'B,    
            fiveG_iA4 := '0'B,    
            fiveG_iA3_128 := '0'B,    
            fiveG_iA2_128 := '0'B,    
            fiveG_iA1_128 := '0'B,    
            fiveG_iA0 := '0'B,    
            fiveG_iA15 := '0'B,    
            fiveG_iA14 := '0'B,    
            fiveG_iA13 := '0'B,    
            fiveG_iA12 := '0'B,    
            fiveG_iA11 := '0'B,    
            fiveG_iA10 := '0'B,    
            fiveG_iA9 := '0'B,    
            fiveG_iA8 := '0'B 
          }
        }
      }
    }
  }
}  


const PDU_NAS_EPS c_PDU_NAS_EPS_TrackingAreaUpdateAccept :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_TrackingAreaUpdateAccept := {
        securityHeaderType := '0000'B,
        messageType := '01001001'B,
        updateResult := 
        {
          valueOfUpdateResult := '111'B,
          spare := '0'B
        },
        spareHalfOctet := '0000'B,
        t3412 := 
        {
          elementIdentifier := '5A'O,
          gprsTimer := 
          {
            timerValue := '11111'B,
            unit := '011'B            
          }
        },
        gUTI := omit,         
        tAI_List := omit,       
        ePSBearerContextStatus  := omit,   
        locationAreaIdentification := omit,
        msIdentity := omit,       
        eMMCause := omit,       
        t3402 :=
        {
          elementIdentifier := '17'O,
          gprsTimer :=
          {
            timerValue := '11111'B,
            unit:= '011'B  
          }
        },        
        t3423 :=
        {
          elementIdentifier := '59'O,
          gprsTimer :=
          {
            timerValue := '11111'B,
            unit:= '011'B  
          }    
        },        
        equivalentPLMNs := omit,     
        emergencyNumberList := omit,     
        ePS_NetworkFeatureSupport := omit, 
        additionalUpdateResult  := omit,    
        t3412_Extended :=
        {
          elementIdentifier := '5E'O,
          lengthIndicator := 1, 
          gprsTimer3  :=   
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },     
        t3324 :=
        {
          elementIdentifier := '6A'O,
          lengthIndicator := 1, 
          gprsTimer2 :=
          {
            timerValue := '11111'B,
            unit:= '011'B  
          }    
        },
        extendedDRXParameters :=
        {
          elementIdentifier := '6E'O,
          lengthIndicator := 1,
          eDRXvalue := '0101'B,
          pagingTimeWindow := '0101'B
        },
        headerCompressionConfigurationStatus :=
        {
          elementIdentifier := '68'O,
          lengthIndicator := 2,
          headerCompressionConfigurationStatus := 
          {
            ebi0 := '1'B,
            ebi1 := '1'B,
            ebi2 := '1'B,
            ebi3 := '1'B,
            ebi4 := '1'B,
            ebi5 := '1'B,
            ebi6 := '1'B,
            ebi7 := '1'B,
            ebi8 := '1'B,
            ebi9 := '1'B,
            ebi10 := '1'B,
            ebi11 := '1'B,
            ebi12 := '1'B,
            ebi13 := '1'B,
            ebi14 := '1'B,
            ebi15 := '1'B
          }
        },
        dNCID :=
        {
          elementIdentifier := '65'O,
          lengthIndicator := 2,
          dCNIDvalue := '1234'O
        },
        sMS_ServiceStatus :=
        {
          sMS_ServiceStatusValue := '001'B,
          spare := '0'B,
          elementIdentifier := '1110'B
        },
        non3GPP_NW_ProvidedPolicies :=
        {
          n3EN_Indicator := '1'B,
          spare := '000'B,
          elementIdentifier := '1101'B
        },
        t3448 := 
        {
          elementIdentifier := '6B'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        networkPolicy :=
        {
          redirPolicy := '1'B,
          spare := '000'B,
          elementIdentifier := '1100'B

        },
        t3447 := 
        {
          elementIdentifier := '6C'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        extendedEmergencyNumberList :=
        {
          elementIdentifier := 'FF'O,
          lengthIndicator := 4,
          extendedEmergencyNumberList :=
          {
            {
              lengthOfExtendedEmergencyNumber := 1,
              extendedEmergencyNumber := '01'O
            },
            {
              lengthOfExtendedEmergencyNumber := 1,
              extendedEmergencyNumber := '02'O
            }
          }
        }
      }
    }
  }
}    
    
    
const PDU_NAS_EPS c_PDU_NAS_EPS_TrackingAreaUpdateReject :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_TrackingAreaUpdateReject := {
        securityHeaderType := '0000'B,
        messageType := '01001011'B,
        emmCause:=
        {
          causeValue := '12'O
        },
        t3346 := {
          elementIdentifier := '5F'O,
          lengthIndicator := 1,
          gprsTimer2 := 
          {
            timerValue := '11111'B,
            unit := '011'B            
          }            
        },     
        extendedEmmCause :=
        {
          eUTRANallowedValue := '1'B,
          ePSoptimizationInfo := '0'B,
          spare := '00'B,
          elementIdentifier := '1010'B
        }
      }
    }
  } 
}

const PDU_NAS_EPS c_PDU_NAS_EPS_TrackingAreaUpdateRequest :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_TrackingAreaUpdateRequest := {
        securityHeaderType := '0000'B,
        messageType := '01001000'B,
        ePSupdateType := 
        {
          typeOfUpdate := '111'B,
          activeFlag := '0'B
        },
        nasKeySetId := {
          identifier := '111'B,
          tSC := '0'B    
        },
        oldGUTI := {
          lengthIndicator := 11,
          ePS_MobileIdentity  :=
          {
            typeOfIdentity := '110'B,
            oddEvenInd_identity := 
            {
              guti :=  
              {
                oddevenIndicator := '0'B, 
                spare := '1111'B,
                mccDigit1 := '1'H,
                mccDigit2 := '2'H,
                mccDigit3 := '3'H,
                mncDigit3 := '4'H,
                mncDigit1 := '5'H,
                mncDigit2 := '6'H,
                mMEGI := 'AABB'O,
                mMEC := 'FF'O,
                mTMSI := 'AABBCCDD'O
              }
            }      
          }  
        },
        nonCurrentNative_nasKeySetId := omit, 
        gprsCipheringKeySequenceNumber := omit, 
        old_P_TMSISignature := omit,          
        additionalGUTI := omit,           
        nonce := omit,              
        uENetworkCapability := omit,          
        lastVisitedRegisteredTAI  := omit,      
        dRXParameter   := omit,          
        uE_RadioCapabilityInfoUpdateNeeded := omit, 
        ePSBearerContextStatus  := omit,          
        mSNetworkCapability := omit,          
        oldLocationAreaIdentification := omit,  
        tMSIStatusTV   := omit,          
        mobileStationClassmark2 := omit,        
        mobileStationClassmark3  := omit,       
        supportedCodecList := omit,          
        additionalUpdateType   := omit,        
        voiceDomainPrefandUEsettings := omit,   
        oldGUTI_Type :=  {
          gUTI_Type := '0'B,
          spare := '000'B,
          elementIdentifier  := '1110'B    
        },        
        deviceProperties := {
          lowPriority := '1'B,
          spare := '000'B,
          elementIdentifier := '1101'B    
        },        
        mS_NetworkFeatureSupport := {
          extendedPeriodicTimers := '1'B,
          spare := '000'B,
          elementIdentifier := '1100'B    
        },     
        tMSIBasedNRIContainer :=
        {
          elementIdentifier := '10'O,
          networkResourceIdentifierContainerLV := 
          {
            lengthIndicator := 2 , 
            networkResourceIdentifierContainerV :=
            {
              nRIContainerValue := '1111111111'B,
              spare := '000000'B
            }
          }
        },
        t3324 :=
        {
          elementIdentifier := '6A'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        t3412_Extended :=  
        {
          elementIdentifier := '5E'O,
          lengthIndicator := 1 , 
          gprsTimer3 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        },
        extendedDRXParameters :=
        {
          elementIdentifier := '6E'O,
          lengthIndicator := 1,
          eDRXvalue := '0101'B,
          pagingTimeWindow := '0101'B
        }, 
        uEAdditionalSecurityCapability :=
        {
          elementIdentifier := '6F'O,
          lengthIndicator := 4,
          uEAdditionalSecurityCapabilityV :=
          {
            fiveG_eA7 := '0'B,    
            fiveG_eA6 := '0'B,    
            fiveG_eA5 := '0'B,    
            fiveG_eA4 := '0'B,    
            fiveG_eA3_128 := '0'B,    
            fiveG_eA2_128 := '0'B,    
            fiveG_eA1_128 := '0'B,    
            fiveG_eA0 := '0'B,    
            fiveG_eA15 := '0'B,    
            fiveG_eA14 := '0'B,    
            fiveG_eA13 := '0'B,    
            fiveG_eA12 := '0'B,    
            fiveG_eA11 := '0'B,    
            fiveG_eA10 := '0'B,    
            fiveG_eA9 := '0'B,    
            fiveG_eA8 := '0'B,    
            fiveG_iA7 := '0'B,    
            fiveG_iA6 := '0'B,    
            fiveG_iA5 := '0'B,    
            fiveG_iA4 := '0'B,    
            fiveG_iA3_128 := '0'B,    
            fiveG_iA2_128 := '0'B,    
            fiveG_iA1_128 := '0'B,    
            fiveG_iA0 := '0'B,    
            fiveG_iA15 := '0'B,    
            fiveG_iA14 := '0'B,    
            fiveG_iA13 := '0'B,    
            fiveG_iA12 := '0'B,    
            fiveG_iA11 := '0'B,    
            fiveG_iA10 := '0'B,    
            fiveG_iA9 := '0'B,    
            fiveG_iA8 := '0'B 
          }
        },
        uEStatus :=
        {
          elementIdentifier := '6D'O,
          lengthIndicator := 1,
          uEStatusV :=
          {
            s1ModeReg := '0'B,
            n1ModeReg := '0'B,
            spare := '00000'B
          }
        }
      }
    }
  }
}

const PDU_NAS_EPS c_PDU_NAS_EPS_ActDedEPSBearerContextRequest :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_ActDedEPSBearerContextRequest := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11000101'B,
        linked_EPS_BearerIdentity := 
        {
          linked_EPS_BearerIdentityValue := '1111'B
        },
        spareHalfOctet := '0000'B,
        ePS_QoS := {
          lengthIndicator := 1,
          ePS_QualityOfServiceV :=
          {
            qCI := 'AA'O, 
            maxBitRateUplink := omit,      
            maxBitRateDownlink := omit,      
            guaranteedBitRateUplink := omit,     
            guaranteedBitRateDownlink := omit,   
            maxBitRateUplinkExt := omit,      
            maxBitRateDownlinkExt := omit,      
            guaranteedBitRateUplinkExt := omit,  
            guaranteedBitRateDownlinkExt := omit,      
            maxBitRateUplinkExt2 := omit,
            maxBitRateDownlinkExt2 := omit,
            guaranteedBitRateUplinkExt2 := omit,
            guaranteedBitRateDownlinkExt2 := omit
          }
        },
        trafficFlowTemplate := 
        {
          lengthIndicator := 1,
          valueField :=
          {
            trafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation :=
            {
              numberOfPacketFilters := '0000'B,
              eBIT := '0'B,
              operationCodeTFT := '010'B,
              parametersList := omit  
            }
          }
        },
        transactionIdentifier := omit,
        negotiatedQoS  :=   
        {
          elementIdentifier := '30'O,
          qoSLV :=
          {
            lengthIndicator := 20,
            qoSV :=
            {
              reliabilityClass := '010'B,
              delayClass := '010'B,
              spare1 := '00'B,
              precedenceClass := '010'B,
              spare2 := '0'B,
              peakThroughput := '1010'B,
              meanThroughput := '10101'B,
              spare3 := '000'B,
              deliverErroneusSDU  := '000'B,           
              deliveryOrder := '00'B,                 
              trafficClass := '000'B,                  
              maxSDUSize := '00'O,                  
              maxBitrateUplink := '00'O,               
              maxBitrateDownlink  := '00'O,            
              sduErrorRatio := '0000'B,                 
              residualBER := '0000'B,                   
              trafficHandlingPriority := '00'B,        
              transferDelay := '000000'B,                 
              guaranteedBitRateUplink := '00'O,        
              guaranteedBitRateDownlink := '00'O,      
              sourceStatisticsDescriptor := '0000'B,    
              signallingIndication := '0'B,           
              spare4 := '000'B,                        
              maxBitrateDownlinkExt := '00'O,          
              guaranteedBitRateDownlinkExt := '00'O,   
              maxBitrateUplinkExt := '00'O,            
              guaranteedBitRateUplinkExt := '00'O,     
              maxBitrateDownlinkExt2 := '00'O,         
              guaranteedBitRateDownlinkExt2 := '00'O,  
              maxBitrateUplinkExt2 := '00'O,           
              guaranteedBitRateUplinkExt2 := '00'O  
            }
          }
        },
        negotiated_LLC_SAPI := omit, 
        radioPriority := omit,        
        packetFlowID := omit,        
        protocolConfigOptions := omit,
        wLANOffloadIndication :=
        {
          valueField := 
          {
            eUTRAN_offloadAcceptabilityValue := '0'B,
            uTRAN_offloadAcceptabilityValue := '1'B,
            spare := '00'B 
          },
          elementIdentifier := '1100'B 
        },
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        extendedProtocolConfigurationOptions := omit,
        extendedQoS :=
        {
          elementIdentifier := '5C'O, 
          lengthIndicator := 10,
          extended_QoS_Value :=
          {
            unit_MaxBitRate := '00'O,
            maxBitRate_Uplink := '0002'O,
            maxBitRate_Downlink := '0002'O,
            unit_GuaranteedBitRate := '00'O,
            guaranteedBitRate_Uplink := '0002'O,
            guaranteedBitRate_Downlink := '0002'O
          }
        }
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_ActDefEPSBearerContextRequest :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_ActDefEPSBearerContextRequest := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11000001'B,
        ePS_QoS := {
          lengthIndicator := 1,
          ePS_QualityOfServiceV :=
          {
            qCI := 'AA'O, 
            maxBitRateUplink := omit,      
            maxBitRateDownlink := omit,      
            guaranteedBitRateUplink := omit,     
            guaranteedBitRateDownlink := omit,   
            maxBitRateUplinkExt := omit,      
            maxBitRateDownlinkExt := omit,      
            guaranteedBitRateUplinkExt := omit,  
            guaranteedBitRateDownlinkExt := omit,
            maxBitRateUplinkExt2 := omit,
            maxBitRateDownlinkExt2 := omit,
            guaranteedBitRateUplinkExt2 := omit,
            guaranteedBitRateDownlinkExt2 := omit
          }
        },  
        accessPointName :=
        {
          lengthIndicator := 3,
          accessPointNameValue := 'AABBCC'O
        },
        pDN_Address :=
        {
          lengthIndicator := 5,
          typeValue := '111'B,
          spare := '00000'B,
          addressInformation := '01010101'O
        },
        transactionIdentifier := omit,
        negotiatedQoS  := omit,     
        negotiated_LLC_SAPI := omit, 
        radioPriority := omit,        
        packetFlowID := omit,        
        aPN_AMBR := omit,        
        esmCause := omit,        
        protocolConfigOptions := omit, 
        connectivityType  := {
          connectivityTypeValue := '0001'B,
          elementIdentifier := '1011'B
        },
        wLANOffloadIndication :=
        {
          valueField := 
          {
            eUTRAN_offloadAcceptabilityValue := '0'B,
            uTRAN_offloadAcceptabilityValue := '1'B,
            spare := '00'B 
          },
          elementIdentifier := '1100'B 
        },
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        headerCompressinConfiguration := 
        {
          elementIdentifier := '66'O,
          lengthIndicator := 3,
          headerCompressinConfiguration := 
          {
            p0x0002 := '1'B,
            p0x0003 := '1'B,
            p0x0004 := '1'B,
            p0x0006 := '1'B,
            p0x0102 := '1'B,
            p0x0103 := '1'B,
            p0x0104 := '1'B,
            spare := '0'B,
            max_CID := '0001'O,
            additionalHeaderCompression := omit
          }
        }, 
        controlPlaneOnlyIndication := 
        {
          cPOI := '1'B,
          spare := '000'B,
          elementIdentifier := '1001'B
        },
        extendedProtocolConfigurationOptions := omit,
        servingPLMNRateControl := 
        {
          elementIdentifier := '6E'O,
          lengthIndicator := 2,
          servingPLMNRateControlValue := 5
        },
        extended_APN_AMBR :=
        {
          elementIdentifier := '5F'O, 
          lengthIndicator := 6,
          extended_APN_AMBR_Value :=
          {
            unit_Extended_APN_AMBR_Downlink := '00'O,
            extended_APN_AMBR_Downlink := '0001'O,
            unit_Extended_APN_AMBR_Uplink := '00'O,
            extended_APN_AMBR_Uplink := '0001'O
          }
        },
        extendedQoS :=
        {
          elementIdentifier := '5C'O, 
          lengthIndicator := 10,
          extended_QoS_Value :=
          {
            unit_MaxBitRate := '00'O,
            maxBitRate_Uplink := '0002'O,
            maxBitRate_Downlink := '0002'O,
            unit_GuaranteedBitRate := '00'O,
            guaranteedBitRate_Uplink := '0002'O,
            guaranteedBitRate_Downlink := '0002'O
          }
        }
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_BearerResourceAllocationReject :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_BearerResourceAllocationReject := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11010101'B,
        esmCause :=
        {
          causeValue := '11'O
        },
        protocolConfigOptions := omit,
        backOffTimer := {
          elementIdentifier := '37'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        reAttemptIndicator :=
        {
          elementIdentifier := '6B'O,
          reAttemptIndicatorLV :=
          {
            lengthIndicator := 1,
            valueField := 
            {
              rATC := '1'B,
              ePLMNC := '1'B,
              spare := '000000'B
            }
          }
        }, 
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        extendedProtocolConfigurationOptions := omit
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_BearerResourceModificationReject :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_BearerResourceModificationReject := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11010111'B,
        esmCause := 
        {
          causeValue := '11'O
        },
        protocolConfigOptions := omit,
        backOffTimer := {
          elementIdentifier := '37'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        reAttemptIndicator :=
        {
          elementIdentifier := '6B'O,
          reAttemptIndicatorLV :=
          {
            lengthIndicator := 1,
            valueField := 
            {
              rATC := '1'B,
              ePLMNC := '1'B,
              spare := '000000'B
            }
          }
        }, 
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        extendedProtocolConfigurationOptions := omit 
      }
    }
  }
}

const PDU_NAS_EPS c_PDU_NAS_EPS_DeactEPSBearerContextRequest :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_DeactEPSBearerContextRequest := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11001101'B,
        esmCause := 
        {
          causeValue := '11'O
        },
        protocolConfigOptions := omit,
        t3396 := {
          elementIdentifier := '37'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        wLANOffloadIndication :=
        {
          valueField := 
          {
            eUTRAN_offloadAcceptabilityValue := '0'B,
            uTRAN_offloadAcceptabilityValue := '1'B,
            spare := '00'B 
          },
          elementIdentifier := '1100'B 
        }, 
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        extendedProtocolConfigurationOptions := omit 
      }
    }
  }
}

const PDU_NAS_EPS c_PDU_NAS_EPS_ModifyEPSBearerContextRequest := {
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement := {
      pDU_NAS_EPS_ModifyEPSBearerContextRequest := {
        ePSBearerIdentity := '0001'B,
        procedureTransactionIdentifier := '01010101'B,
        messageType := '11001001'B,
        newEPS_QoS := {
          elementIdentifier := '5B'O,
          lengthIndicator := 1,
          ePS_QualityOfServiceV := {
            qCI := 'AB'O,
            maxBitRateUplink := omit,
            maxBitRateDownlink := omit,
            guaranteedBitRateUplink := omit,
            guaranteedBitRateDownlink := omit,
            maxBitRateUplinkExt := omit,
            maxBitRateDownlinkExt := omit,
            guaranteedBitRateUplinkExt := omit,
            guaranteedBitRateDownlinkExt := omit,
            maxBitRateUplinkExt2 := omit,
            maxBitRateDownlinkExt2 := omit,
            guaranteedBitRateUplinkExt2 := omit,
            guaranteedBitRateDownlinkExt2 := omit
          }
        },
        trafficFlowTemplate := omit,
        new_QoS := omit,
        negotiated_LLC_SAPI := omit,
        radioPriority := omit,
        packetFlowID := omit,
        aPN_AMBR := omit,
        protocolConfigOptions := omit,
        wLANOffloadIndication :=
        {
          valueField := 
          {
            eUTRAN_offloadAcceptabilityValue := '0'B,
            uTRAN_offloadAcceptabilityValue := '1'B,
            spare := '00'B 
          },
          elementIdentifier := '1100'B 
        }, 
        nBIFOMContainer := 
        {
          elementIdentifier := '33'O,
          lengthIndicator := 3,
          contents :=
          {{
            parameterIdentifier := '01'O,
            lengthIndicator := 1,
            parameterContents := 
            {
              nBIFOM_Mode := '11'O
            }
          }}           
        },
        headerCompressinConfiguration := omit,
        extendedProtocolConfigurationOptions := omit,
        extended_APN_AMBR :=
        {
          elementIdentifier := '5F'O, 
          lengthIndicator := 6,
          extended_APN_AMBR_Value :=
          {
            unit_Extended_APN_AMBR_Downlink := '00'O,
            extended_APN_AMBR_Downlink := '0001'O,
            unit_Extended_APN_AMBR_Uplink := '00'O,
            extended_APN_AMBR_Uplink := '0001'O
          }
        },
        extendedQoS :=
        {
          elementIdentifier := '5C'O, 
          lengthIndicator := 10,
          extended_QoS_Value :=
          {
            unit_MaxBitRate := '00'O,
            maxBitRate_Uplink := '0002'O,
            maxBitRate_Downlink := '0002'O,
            unit_GuaranteedBitRate := '00'O,
            guaranteedBitRate_Uplink := '0002'O,
            guaranteedBitRate_Downlink := '0002'O
          }
        }
      }
    } 
  }
};


const PDU_NAS_EPS c_PDU_NAS_EPS_PDN_ConnectivityReject :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_PDN_ConnectivityReject := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11010001'B,
        esmCause := 
        {
          causeValue := '11'O
        },
        protocolConfigOptions := omit,
        backOffTimer := {
          elementIdentifier := '37'O, 
          lengthIndicator := 1,
          gprsTimer3 :={
            timerValue := '00111'B,
            unit := '000'B      
          }    
        },
        reAttemptIndicator :=
        {
          elementIdentifier := '6B'O,
          reAttemptIndicatorLV :=
          {
            lengthIndicator := 1,
            valueField := 
            {
              rATC := '1'B,
              ePLMNC := '1'B,
              spare := '000000'B
            }
          }
        },
        nBIFOMContainer := omit,
        extendedProtocolConfigurationOptions := omit
      }
    }
  }
}

const PDU_NAS_EPS c_PDU_NAS_EPS_RemoteUEReport :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
       pDU_NAS_EPS_RemoteUEReport := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11101001'B,
        remoteUEContextConnected :=
        {
          elementIdentifier := '79'O,
          lengthIndicator := 8,
          nrOfContents := 1,
          contents :=
          {{
            lengthIndicator := 6,
            numberOfUserIDs := 1,
            userIDList :=
            {
              {
                lengthIndicator := 4,
                typeOfUserInfo := '011'B,
                digits :=
                {
                  mSISDN :=
                  {
                    oddevenIndicator := '1'B,       
                    digits := '00ABCDE'H,
                    fillerDigit := omit
                  }
                }
              }
            },
            addressType := omit,
            spare := omit,
            addressInformation := omit
          }}
        },
        remoteUEContextDisconnected :=
        {
          elementIdentifier := '7A'O,
          lengthIndicator := 8,
          nrOfContents := 1,
          contents :=
          {{
           lengthIndicator := 6,
            numberOfUserIDs := 1,
            userIDList :=
            {
              {
                lengthIndicator := 4,
                typeOfUserInfo := '010'B,
                digits :=
                {
                  iMSI :=
                  {
                    oddevenIndicator := '1'B,       
                    digits := '00ABCDE'H,
                    fillerDigit := omit
                  }
                }
              }
            },
            addressType := omit,
            spare := omit,
            addressInformation := omit
          }}
        },
        proSeKeyManagementFunctionAddress :=
        {
          elementIdentifier := '6F'O,
          lengthIndicator := 5,
          addressType := '001'B,
          spare := '00000'B,
          addressInformation := 
          {
            ipv4 := '7F000001'O
          }
        }
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_RemoteUEReportResponse :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
       pDU_NAS_EPS_RemoteUEReportResponse := {
         ePSBearerIdentity := '0000'B,
         procedureTransactionIdentifier := '00000000'B,
         messageType := '11101010'B
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_ESMDataTransport :=
{    
  protocolDiscriminator := '0010'B,
  ePS_messages := {
    ePS_SessionManagement :={
      pDU_NAS_EPS_ESMDataTransport := {
        ePSBearerIdentity := '0000'B,
        procedureTransactionIdentifier := '00000000'B,
        messageType := '11101011'B,
        userDataContainer :=
        {
          lengthIndicator := 1,
          contents := '00'O
        },
        releaseAssistanceIndication :=
        {
          dDX := '00'B,
          spare := '00'B,
          elementIdentifier := '1111'B
        }
      } 
    }
  }   
}

const PDU_NAS_EPS c_PDU_NAS_EPS_DataServiceRequest :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_ControlPlaneServiceRequest := {
        securityHeaderType := '0000'B,
        messageType := '01001101'B,
        controlPlaneServiceType :=
        {
          controlPlaneServiceTypeValue := '001'B,
          activeFlag := '0'B
        },
        nASKeySetIdentifier :=
        {
          identifier := '001'B,
          tSC := '1'B
        },
        eSM_MessageContainer := 
        {
          elementIdentifier := '78'O,
          eSM_MessageContainer :=
          {
            lengthIndicator := 2,
            content := 'FFFF'O
          }
        },
        nAS_MessageContainer := omit,
        ePS_BearerContextStatus := omit,
        deviceProperties := 
        {
          lowPriority := '1'B,
          spare := '000'B,
          elementIdentifier := '1101'B    
        }
      }
    }
  }
}  

const PDU_NAS_EPS c_PDU_NAS_EPS_ServiceAccept :=
{    
  protocolDiscriminator := '0111'B,
  ePS_messages := {
    ePS_MobilityManagement :={
      pDU_NAS_EPS_ServiceAccept := {
        securityHeaderType := '0000'B,
        messageType := '01001111'B,
        ePS_BearerContextStatus := 
        {
          elementIdentifier := '57'O,
          lengthIndicator := 2,
          ebi0 := '1'B,
          ebi1 := '1'B,
          ebi2 := '1'B,
          ebi3 := '1'B,
          ebi4 := '1'B,
          ebi5 := '1'B,
          ebi6 := '1'B,
          ebi7 := '1'B,
          ebi8 := '1'B,
          ebi9 := '1'B,
          ebi10 := '1'B,
          ebi11 := '1'B,
          ebi12 := '1'B,
          ebi13 := '1'B,
          ebi14 := '1'B,
          ebi15 := '1'B
        },
        t3448 := 
        {
          elementIdentifier := '6B'O,
          lengthIndicator := 1 , 
          gprsTimer2 :=
          {
            timerValue := '00101'B,
            unit := '011'B
          }
        }
      }
    }
  }
}  


template  EPS_MobileIdentityV t_ePS_MobileIdentityV := 
{
  typeOfIdentity := '110'B,
  oddEvenInd_identity := 
  {
    guti :=  
    {
      oddevenIndicator := '0'B, 
      spare := '1111'B,
      mccDigit1 := '1'H,
      mccDigit2 := '2'H,
      mccDigit3 := '3'H,
      mncDigit3 := '4'H,
      mncDigit1 := '5'H,
      mncDigit2 := '6'H,
      mMEGI := 'AABB'O,
      mMEC := 'FF'O,
      mTMSI := 'AABBCCDD'O
    }
  }
}        

template IMSI t_imsi :=
{
  oddevenIndicator := '1'B,       
  digits := '1234567'H,
  fillerDigit := omit 
}

template GUTI t_guti :=  
{
  oddevenIndicator := '0'B, 
  spare := '1111'B,
  mccDigit1 := '1'H,
  mccDigit2 := '2'H,
  mccDigit3 := '3'H,
  mncDigit3 := '4'H,
  mncDigit1 := '5'H,
  mncDigit2 := '6'H,
  mMEGI := 'AABB'O,
  mMEC := 'FF'O,
  mTMSI := 'AABBCCDD'O
}

template IMEI t_imei :=
{
  oddevenIndicator := '1'B,       
  digits := '1234567'H,
  fillerDigit := omit 
}

testcase tc_NAS_EPS_AttachAccept() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_AttachAccept);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_AttachAccept );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_AttachAccept == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_AttachReject() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_AttachReject);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_AttachReject );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_AttachReject == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_AttachRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_AttachRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_AttachRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_AttachRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_AttachRequest_withCodec() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  var PDU_NAS_EPS v_PDU_NAS_EPS_AttachRequest := c_PDU_NAS_EPS_AttachRequest;
  v_PDU_NAS_EPS_AttachRequest.ePS_messages.ePS_MobilityManagement.pDU_NAS_EPS_AttachRequest.supportedCodecList := {
    elementIdentifier := '40'O,
    lengthIndicator := 3,
    codecList := {
      {
        systemIdentification1 := '01'O,
        lengthOfBitmap1 := 1,
        codecBitmap1_bits1to8 := '01'O,
        codecBitmap1_bits9to16 := omit,
        additional_codecs := omit
      }
    }
  };
  log(c_PDU_NAS_EPS_AttachRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( v_PDU_NAS_EPS_AttachRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( v_PDU_NAS_EPS_AttachRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_TrackingAreaUpdateAccept() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_TrackingAreaUpdateAccept);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_TrackingAreaUpdateAccept );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_TrackingAreaUpdateAccept == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_TrackingAreaUpdateReject() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_TrackingAreaUpdateReject);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_TrackingAreaUpdateReject );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_TrackingAreaUpdateReject == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_TrackingAreaUpdateRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_TrackingAreaUpdateRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_TrackingAreaUpdateRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_TrackingAreaUpdateRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_ActDedEPSBearerContextRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_ActDedEPSBearerContextRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_ActDedEPSBearerContextRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_ActDedEPSBearerContextRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_ActDefEPSBearerContextRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_ActDefEPSBearerContextRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_ActDefEPSBearerContextRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_ActDefEPSBearerContextRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_BearerResourceAllocationReject() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_BearerResourceAllocationReject);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_BearerResourceAllocationReject );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_BearerResourceAllocationReject == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_BearerResourceModificationReject() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_BearerResourceModificationReject);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_BearerResourceModificationReject );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_BearerResourceModificationReject == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_DeactEPSBearerContextRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_DeactEPSBearerContextRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_DeactEPSBearerContextRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_DeactEPSBearerContextRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_ModifyEPSBearerContextRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_ModifyEPSBearerContextRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_ModifyEPSBearerContextRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);
  
  if ( c_PDU_NAS_EPS_ModifyEPSBearerContextRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_PDN_ConnectivityReject() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_PDN_ConnectivityReject);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_PDN_ConnectivityReject );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_PDN_ConnectivityReject == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}

}

testcase tc_NAS_EPS_encdec_EPS_MobileIdentityV() runs on NAS_EPS_Test_CT
{
  var octetstring v_ePS_MobileIdentityV_oct := enc_EPS_MobileIdentityV_NAS_EPS(valueof(t_ePS_MobileIdentityV));
  log("ENCODE: ",v_ePS_MobileIdentityV_oct);

  var EPS_MobileIdentityV v_ePS_MobileIdentityV;
  var integer vl_int := dec_EPS_MobileIdentityV_NAS_EPS_backtrack(v_ePS_MobileIdentityV_oct,v_ePS_MobileIdentityV);
  log("DECODE: ",v_ePS_MobileIdentityV);
  if ( vl_int == 0 and match(v_ePS_MobileIdentityV,t_ePS_MobileIdentityV)) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_encdec_IMSI() runs on NAS_EPS_Test_CT
{
  var octetstring v_imsi_oct := enc_IMSI_NAS_EPS(valueof(t_imsi));
  log("ENCODE: ",v_imsi_oct);
  var IMSI v_imsi;
  var integer vl_int := dec_IMSI_NAS_EPS_backtrack(v_imsi_oct,v_imsi);
  log("DECODE: ",v_imsi);
  if ( vl_int == 0 and match(v_imsi,t_imsi)) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_encdec_GUTI() runs on NAS_EPS_Test_CT
{
  var octetstring v_guti_oct := enc_GUTI_NAS_EPS(valueof(t_guti));
  log("ENCODE: ",v_guti_oct);
  var GUTI v_guti;
  var integer vl_int := dec_GUTI_NAS_EPS_backtrack(v_guti_oct,v_guti);
  log("DECODE: ",v_guti);
  if ( vl_int == 0 and match(v_guti,t_guti)) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_encdec_IMEI() runs on NAS_EPS_Test_CT
{
  var octetstring v_imei_oct := enc_IMEI_NAS_EPS(valueof(t_imei));
  log("ENCODE: ",v_imei_oct);
  var IMEI v_imei;
  var integer vl_int := dec_IMEI_NAS_EPS_backtrack(v_imei_oct,v_imei);
  log("DECODE: ",v_imei);
  if ( vl_int == 0 and match(v_imei,t_imei)) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_RemoteUEReport() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_RemoteUEReport);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_RemoteUEReport );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_RemoteUEReport == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_RemoteUEReportResponse() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_RemoteUEReportResponse);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_RemoteUEReportResponse );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_RemoteUEReportResponse == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_ESMDataTransport() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_ESMDataTransport);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_ESMDataTransport );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_ESMDataTransport == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_DataServiceRequest() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_DataServiceRequest);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_DataServiceRequest );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_DataServiceRequest == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

testcase tc_NAS_EPS_ServiceAccept() runs on NAS_EPS_Test_CT
{
  var octetstring v_Encoded_msg;
  log(c_PDU_NAS_EPS_ServiceAccept);
  v_Encoded_msg := enc_PDU_NAS_EPS( c_PDU_NAS_EPS_ServiceAccept );
  log("ENCODE: ",v_Encoded_msg);

  var PDU_NAS_EPS v_EPSM_msg;
  v_EPSM_msg := dec_PDU_NAS_EPS( v_Encoded_msg );
  log("DECODE: ",v_EPSM_msg);

  if ( c_PDU_NAS_EPS_ServiceAccept == v_EPSM_msg ) {setverdict(pass);}
  else {setverdict(fail);}
}

control
{ 
  execute( tc_NAS_EPS_AttachAccept()); 
  execute( tc_NAS_EPS_AttachReject()); 
  execute( tc_NAS_EPS_AttachRequest());
  execute( tc_NAS_EPS_AttachRequest_withCodec());
  execute( tc_NAS_EPS_TrackingAreaUpdateAccept())  
  execute( tc_NAS_EPS_TrackingAreaUpdateReject()) 
  execute( tc_NAS_EPS_TrackingAreaUpdateRequest()) 
  execute( tc_NAS_EPS_ActDedEPSBearerContextRequest()) 
  execute( tc_NAS_EPS_ActDefEPSBearerContextRequest()) 
  execute( tc_NAS_EPS_BearerResourceAllocationReject())  
  execute( tc_NAS_EPS_BearerResourceModificationReject())          
  execute( tc_NAS_EPS_DeactEPSBearerContextRequest())
  execute( tc_NAS_EPS_ModifyEPSBearerContextRequest() );
  execute( tc_NAS_EPS_PDN_ConnectivityReject() );
  execute( tc_NAS_EPS_encdec_EPS_MobileIdentityV() );
  execute( tc_NAS_EPS_encdec_IMSI() );
  execute( tc_NAS_EPS_encdec_GUTI() );
  execute( tc_NAS_EPS_encdec_IMEI() );
  execute( tc_NAS_EPS_RemoteUEReport() );
  execute( tc_NAS_EPS_RemoteUEReportResponse() );
  execute( tc_NAS_EPS_ESMDataTransport() );
  execute( tc_NAS_EPS_DataServiceRequest() );
  execute( tc_NAS_EPS_ServiceAccept() );


}

} // end of module
