Rev

Rev 624 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | SVN | Bug Tracker

/******************************************************************************
 *  @author     STF 435, STF471
 *  @version    $Id$
 *  @desc      This module contains the type definitions for SMS messages as specified in
 * 3GPP 24-011 and 3GPP 23-040 Rel 8 and 9.
 * SMS over IMS is specified in 3GPP 24-341.
 * This module is part of LibSipV3.
 */

module LibSip_SMSTypesAndValues {
    import from LibCommon_DataStrings all;

    group SMS_Declarations {

        const RP_MessageTypeIndicator_Type c_MT_RP_DATA_ul := '000'B;
        /* RP_DATA_ul */
        const RP_MessageTypeIndicator_Type c_MT_RP_DATA_dl := '001'B;
        /* RP_DATA_dl */
        const RP_MessageTypeIndicator_Type c_MT_RP_ACK_ul := '010'B;
        /* RP_ACK_ul */
        const RP_MessageTypeIndicator_Type c_MT_RP_ACK_dl := '011'B;
        /* RP_ACK_dl */
        const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_ul := '100'B;
        /* RP_ERROR_ul */
        const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_dl := '101'B;
        /* RP_ERROR_dl */
        const RP_MessageTypeIndicator_Type c_MT_RP_SMMA := '110'B;
        /* RP_SMMA */
        const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER := '00'B;
        /* SMS DELIVER */
        const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER_REPORT := '00'B;
        /* SMS DELIVER REPORT */
        const TP_MessageTypeIndicator_Type c_MT_SMS_STATUS_REPORT := '10'B;
        /* SMS STATUS REPORT */
        const TP_MessageTypeIndicator_Type c_MT_SMS_COMMAND := '10'B;
        /* SMS COMMAND */
        const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT := '01'B;
        /* SMS SUBMIT, SMS SUBMIT REPORT */
        const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT_REPORT := '01'B;
        /* SMS SUBMIT, SMS SUBMIT REPORT */
        const Bit7 c_IEI_RP_UserData := '1000001'B;
        /* 24.011 cl. 8.2.5.3 */
        const charstring c_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK.";



        type record TypeOfNumberingPlan {
            /* 24.008 cl. 10.5.4.7, 10.5.4.9, 10.5.4.13 */
            Bit1 extBit,
            /* Extension Bit */
            Bit3 typeOfNumber,
            /* Type Of Number */
            Bit4 numberingPlanId /* Numbering Plan Identification */
        }
        /* SM-RP Type Declarations */
        type Bit3 RP_MessageTypeIndicator_Type;
        /* 24.011 cl. 8.2.2 */
        type Oct1 RP_MessageReference_Type;
        /* 24.011 cl. 8.2.3 */
        type record RP_OriginatorAddress_dl {
            /* 24.011 cl. 8.2.5.1 */
            Bit1 spare optional,
            /* 0   */
            Bit7 iei optional,
            /* 0101 1110 */
            Oct1 iel,
            /* min value 2 and max value is 11  */
            TypeOfNumberingPlan typeOfNumberingPlan,
            /*    */
            octetstring digits  length(1 .. 10)
        }

        type record RP_OriginatorAddress_ul {
            /* 24.011 cl. 8.2.5.1 */
            Bit1 spare optional,
            /* 0   */
            Bit7 iei optional,
            /* 0101 1110 */
            Oct1 iel /* 0  */
        }

        type record RP_DestinationAddress_ul {
            /* 24.011 cl. 8.2.5.2 */
            Bit1 spare optional,
            /* 0   */
            Bit7 iei optional,
            /* 0101 1110 */
            Oct1 iel,
            /* min value 2 and max value is 11  */
            TypeOfNumberingPlan typeOfNumberingPlan,
            /*    */
            octetstring digits  length(1 .. 10)
        }
        type record RP_DestinationAddress_dl {
            /* 24.011 cl. 8.2.5.2 */
            Bit1 spare optional,
            /* 0   */
            Bit7 iei optional,
            /* 0101 1110 */
            Oct1 iel /* 0  */
        }

        type record RP_UserData {
            /* 24.011 cl. 8.2.5.3 */
            Bit1 spare optional,
            /* 0, present in case of TLV; omit in case of LV   */
            Bit7 iei optional,
            /* 1000001, present in case of TLV; omit in case of LV   */
            Oct1 iel,
            /*   */
            TP_PDU_Type tP_PDU /* <= 232 octets */
        }

        type record RP_Cause {
            /* 24.011 cl. 8.2.5.4 */
            Bit1 spare optional,
            /* present in case of TLV; omit in case of LV */
            Bit7 iei optional,
            /* present in case of TLV; omit in case of LV */
            Oct1 iel,
            /* 2 or 3  */
            Bit1 extBit1,
            /* 0 */
            Bit7 causeValue1,
            /* Table 8.4/3GPP TS 24.011  */
            Bit1 extBit2,
            /* 0 */
            Bit7 causeValue2,
            /* Table 8.4/3GPP TS 24.011  */
            Oct1 diagnostic optional /* Parameters included in the return error from MAP */
        }

        /* End SM-RP Type Declarations */
        /* SM-RP PDU Declarations */
        type record RP_DATA_dl_Type {
            /* 24.011 cl. 7.3.1.1
                                                  Direction:     n -> ue */

            Bit5 spare5,
            /* cl. 8.2.2      M V 5 bits   */
            RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
            /* cl. 8.2.2      M V 3 bits   */
            RP_MessageReference_Type rP_MessageReference,
            /* cl. 8.2.3      M LV 1 */
            RP_OriginatorAddress_dl rP_OriginatorAddress,
            /* cl. 8.2.5.1    M LV 1-12 octets   */
            RP_DestinationAddress_dl rP_DestinationAddress,
            /* cl. 8.2.5.2    M LV 1   */
            RP_UserData rP_UserData /* cl. 8.2.5.3    M LV <= 233 octets */
        }

        type record RP_DATA_ul_Type {
            /* 24.011 cl. 7.3.1.2
                                                 Direction:     ue -> n */

            Bit5 spare5,
            /* cl. 8.2.2      M V 5 bits   */
            RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
            /* cl. 8.2.2      M V 3 bits   */
            RP_MessageReference_Type rP_MessageReference,
            /* cl. 8.2.3      M LV 1 */
            RP_OriginatorAddress_ul rP_OriginatorAddress,
            /* cl. 8.2.5.1    M LV 1   */
            RP_DestinationAddress_ul rP_DestinationAddress,
            /* cl. 8.2.5.2    M LV 1   */
            RP_UserData rP_UserData /* cl. 8.2.5.3    M LV <= 233 octets */
        }

        type record RP_SMMA_Type {
            /* 24.011 cl. 7.3.2
                                                 Direction:     ue -> n */

            Bit5 spare5,
            /* cl. 8.2.2      M V 5 bits   */
            RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
            /* cl. 8.2.2      M V 3 bits   */
            RP_MessageReference_Type rP_MessageReference /* cl. 8.2.3      M LV 1 */
        }

        type record RP_ACK_Type {
            /* 24.011 cl. 7.3.3
                                                 Direction:     ue <-> n */

            Bit5 spare5,
            /* cl. 8.2.2      M V 5 bits   */
            RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
            /* cl. 8.2.2      M V 3 bits   */
            RP_MessageReference_Type rP_MessageReference,
            /* cl. 8.2.3      M LV 1 */
            RP_UserData rP_UserData optional /* cl. 8.2.5.3    O TLV <= 234 octets */
        }

        type record RP_ERROR_Type {
            /* 24.011 cl. 7.3.4
                                                 Direction:     ue <-> n */

            Bit5 spare5,
            /* cl. 8.2.2      M V 5 bits   */
            RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
            /* cl. 8.2.2      M V 3 bits   */
            RP_MessageReference_Type rP_MessageReference,
            /* cl. 8.2.3      M LV 1 */
            RP_Cause rP_Cause,
            /* cl. 8.2.5.4    M LV 2-3 */
            RP_UserData rP_UserData optional /* cl. 8.2.5.3    O TLV <= 234 octets */
        }

        type union RP_PDU_Type {
            RP_DATA_dl_Type RP_DATA_dl,
            RP_DATA_ul_Type RP_DATA_ul,
            RP_SMMA_Type RP_SMMA,
            RP_ACK_Type RP_ACK,
            RP_ERROR_Type RP_ERROR
        }

        /* End SM-RP PDU Declarations */
        /* SM-TP Type Declarations */
        type record TP_Address_Type {
            /* 23.040 cl. 9.1.2.5 */
            Oct1 iel,
            /* min value 2 and max value is 11  */
            TypeOfNumberingPlan typeOfNumberingPlan,
            octetstring digits  length(0 .. 10) optional
        }

        type Bit2 TP_MessageTypeIndicator_Type;
        /* 23.040 cl. 9.2.3.1 */
        type Oct1 TP_MessageReference_Type;
        /* 23.040 cl. 9.2.3.6 */
        type Oct1 TP_UserDataLength_Type;
        /* 23.040 cl. 9.2.3.16 */
        type record TP_ProtocolIdentifier_Type {
            /* 23.040 cl. 9.2.3.9 */
            Bit2 pidType,
            /*  */
            Bit1 interworking,
            /*  */
            Bit5 pidValue /*  */
        }

        type record TP_DataCodingScheme_Type {
            /* 23.040 cl. 9.2.3.10 + 23.040 cl. 4 */
            Bit4 codingGroup,
            /*  */
            Bit4 codeValue /*  */
        }

        type hexstring TP_ServiceCentreTimeStamp_Type  length(14);
        /* 23.040 cl. 9.2.3.11 */
        type Oct1 TP_ValidityPeriodRelative_Type;
        /* 23.040 cl. 9.2.3.12.1 */
        type hexstring TP_ValidityPeriodAbsolute_Type  length(14);
        /* 23.040 cl. 9.2.3.12.2 */
        type record TP_ValidityPeriodEnhanced_Type {
            /* 23.040 cl. 9.2.3.12.3 */
            Bit1 extBit,
            /* */
            Bit1 singleShot,
            /* */
            Bit3 spare3,
            /* */
            Bit3 validityPeriodFormat,
            /* */
            Oct6 validityPeriod /* */
        }

        type union TP_ValidityPeriod_Type {
            /* 23.040 cl. 9.2.3.3 */
            TP_ValidityPeriodRelative_Type TP_ValidityPeriodRelative,
            /* Relative format */
            TP_ValidityPeriodAbsolute_Type TP_ValidityPeriodAbsolute,
            /* Absolute format */
            TP_ValidityPeriodEnhanced_Type TP_ValidityPeriodEnhanced /* Enhanced format */
        }

        type record TP_Status_Type {
            /* 23.040 cl. 9.2.3.15 */
            Bit1 reserved,
            /* */
            Bit7 status /* */
        }

        type Bit8 TP_Command_Type;
        /* 23.040 cl. 9.2.3.19 */
        type record TP_ParameterIndicator_Type {
            /* 23.040 cl. 9.2.3.27 */
            Bit1 extBit1,
            /* */
            Bit4 spare4,
            /* */
            Bit1 tP_UDL,
            /* */
            Bit1 tP_DCS,
            /* */
            Bit1 tP_PID /* */
        }

        /* End SM-TP Type Declarations */
        /* SM-TP PDU Declarations */
        type record SMS_DELIVER_Type {
            /* 23.040 cl. 9.2.2.1
                                                 Direction:     n -> ue */

            Bit1 tP_ReplyPath,
            /* 23.040 cl. 9.2.3.17  */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit1 tP_StatusReportIndication,
            /* 23.040 cl. 9.2.3.4 */
            Bit2 spare2,
            /* */
            Bit1 tP_MoreMessagesToSend,
            /* 23.040 cl. 9.2.3.2 */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            TP_Address_Type tP_OriginatingAddress,
            /* 23.040 cl. 9.1.2.5 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
            /* 23.040 cl. 9.2.3.9 */
            TP_DataCodingScheme_Type tP_DataCodingScheme_Type,
            /* 23.040 cl. 9.2.3.10  */
            TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
            /* 23.040 cl. 9.2.3.11 */
            TP_UserDataLength_Type tP_UserDataLength,
            /* 23.040 cl. 9.2.3.16, derived from SUBMIT */
            octetstring tP_UserData  length(0 .. 140) optional /* 23.040 cl. 9.2.3.24, derived from SUBMIT */
        }

        type record SMS_DELIVER_REPORT_Type {
            /* 23.040 cl. 9.2.2.1a
                                                 Direction:     ue -> n */

            Bit1 spare1,
            /* */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit4 spare4,
            /* */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            Oct1 tP_FailureCause optional,
            /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */
            TP_ParameterIndicator_Type tP_ParameterIndicator,
            /* 23.040 cl. 9.2.3.27 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
            /* 23.040 cl. 9.2.3.9 */
            TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
            /* 23.040 cl. 9.2.3.10 */
            TP_UserDataLength_Type tP_UserDataLength optional,
            /* 23.040 cl. 9.2.3.16  */
            octetstring tP_UserData  length(0 .. 159) optional /* 23.040 cl. 9.2.3.24 */
        }

        type record SMS_SUBMIT_Type {
            /* 23.040 cl. 9.2.2.2
                                                 Direction:     ue -> n */

            Bit1 tP_ReplyPath,
            /* 23.040 cl. 9.2.3.17 */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit1 tP_StatusReportRequest,
            /* 23.040 cl. 9.2.3.5 */
            Bit2 tP_ValidityPeriodFormat,
            /* 23.040 cl. 9.2.3.3 */
            Bit1 tP_RejectDuplicates,
            /* 23.040 cl. 9.2.3.25 */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            TP_MessageReference_Type tP_MessageReference,
            /* 23.040 cl. 9.2.3.6 */
            TP_Address_Type tP_DestinationAddress,
            /* 23.040 cl. 9.1.2.5 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
            /* 23.040 cl. 9.2.3.9 */
            TP_DataCodingScheme_Type tP_DataCodingScheme_Type,
            /* 23.040 cl. 9.2.3.10 */
            // one of the subsequent ValidityPeriod solutions has be removed
            TP_ValidityPeriod_Type tP_ValidityPeriod optional,
            /* 23.040 cl. 9.2.3.12 */
            // TP_ValidityPeriodRelative_Type tP_ValidityPeriodRelative optional, /* 23.040 cl. 9.2.3.12.1 */
            // TP_ValidityPeriodAbsolute_Type tP_ValidityPeriodAbsolute optional, /* 23.040 cl. 9.2.3.12.2 */
            // TP_ValidityPeriodEnhanced_Type tP_ValidityPeriodEnhanced optional, /* 23.040 cl. 9.2.3.12.3 */
            TP_UserDataLength_Type tP_UserDataLength,
            /* 23.040 cl. 9.2.3.16  */
            octetstring tP_UserData  length(0 .. 140) optional /* 23.040 cl. 9.2.3.24  */
        }
        type record SMS_SUBMIT_REPORT_Type {
            /* 23.040 cl. 9.2.2.2a
                                                 Direction:     n -> ue */

            Bit1 spare1,
            /* */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit4 spare4,
            /* */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            Oct1 tP_FailureCause optional,
            /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */
            TP_ParameterIndicator_Type tP_ParameterIndicator,
            /* 23.040 cl. 9.2.3.27 */
            TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
            /* 23.040 cl. 9.2.3.11 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
            /* 23.040 cl. 9.2.3.9 */
            TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
            /* 23.040 cl. 9.2.3.10 */
            TP_UserDataLength_Type tP_UserDataLength optional,
            /* 23.040 cl. 9.2.3.16 */
            octetstring tP_UserData  length(0 .. 152) optional /* 23.040 cl. 9.2.3.24  */
        }

        type record SMS_STATUS_REPORT_Type {
            /* 23.040 cl. 9.2.2.3
                                                 Direction:     n -> ue */

            Bit1 spare1,
            /* */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit1 tP_StatusReportQualifier,
            /* 23.040 cl. 9.2.3.26  */
            Bit2 spare2,
            /* */
            Bit1 tP_MoreMessagesToSend,
            /* 23.040 cl. 9.2.3.2 */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            TP_MessageReference_Type tP_MessageReference,
            /* 23.040 cl. 9.2.3.6 */
            TP_Address_Type tP_RecipientAddress,
            /* 23.040 cl. 9.1.2.5 */
            TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
            /* 23.040 cl. 9.2.3.11 */
            TP_ServiceCentreTimeStamp_Type tP_DischargeTime,
            /* 23.040 cl. 9.2.3.12 */
            TP_Status_Type tP_Status,
            /* 23.040 cl. 9.2.3.15 */
            TP_ParameterIndicator_Type tP_ParameterIndicator optional,
            /* 23.040 cl. 9.2.3.27 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
            /* 23.040 cl. 9.2.3.9 */
            TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
            /* 23.040 cl. 9.2.3.10 */
            TP_UserDataLength_Type tP_UserDataLength optional,
            /* 23.040 cl. 9.2.3.16 */
            octetstring tP_UserData  length(0 .. 143) optional /* 23.040 cl. 9.2.3.24  */
        }

        type record SMS_COMMAND_Type {
            /* 23.040 cl. 9.2.2.4
                                                 Direction:     ue -> n */

            Bit1 spare1,
            /* */
            Bit1 tP_UserDataHeaderIndicator,
            /* 23.040 cl. 9.2.3.23 */
            Bit1 tP_StatRptReq,
            /* Table 8.4/3GPP TS 24.011  */
            Bit3 spare3,
            /* */
            TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
            /* 23.040 cl. 9.2.3.1 */
            TP_MessageReference_Type tP_MessageReference,
            /* 23.040 cl. 9.2.3.6 */
            TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
            /* 23.040 cl. 9.2.3.9 */
            TP_Command_Type tP_CommandType,
            /* 23.040 cl. 9.2.3.19 */
            TP_MessageReference_Type tP_MessageNumber,
            /* 23.040 cl. 9.2.3.18 */
            TP_Address_Type tP_DestinationAddress,
            /* 23.040 cl. 9.1.2.5 */
            TP_UserDataLength_Type tP_CommandDataLength,
            /* 23.040 cl. 9.2.3.20 (number of octets) */
            octetstring tP_CommandData  length(0 .. 156) optional /* 23.040 cl. 9.2.3.21 */
        }

        type union TP_PDU_Type {
            SMS_DELIVER_Type SMS_DELIVER,
            SMS_DELIVER_REPORT_Type SMS_DELIVER_REPORT,
            SMS_SUBMIT_Type SMS_SUBMIT,
            SMS_SUBMIT_REPORT_Type SMS_SUBMIT_REPORT,
            SMS_STATUS_REPORT_Type SMS_STATUS_REPORT,
            SMS_COMMAND_Type SMS_COMMAND
        }



    /* End SM-TP PDU Declarations */
    }
    with {
        encode "SMS Types";
    } // group SMS_Declarations
} // End of module LibSip_SMSTypesAndValues