Rev

Rev 602 | Details | Compare with Previous | Last modification | View Log | SVN | Bug Tracker

Rev Author Line No. Line
520 garciay 1
/*
601 nikolajev 2
 *  @author     STF 435, STF 471
520 garciay 3
 *  @version    $Id$
601 nikolajev 4
 *  @desc       This module provides the types used by the test component
520 garciay 5
 *              for SIP-SMS over IMS as specified in 3GPP 24.341 tests.
569 nikolajev 6
 *              This module is part of LibSipV3.
520 garciay 7
 */
8
module LibSip_SMSTemplates {
9
    import from LibCommon_DataStrings all;
10
    import from LibSip_SMSTypesAndValues all;
11
    import from LibSip_SMSFunctions all;
599 tepelmann 12
 
520 garciay 13
    group SMS_Templates_Group {
599 tepelmann 14
 
520 garciay 15
        /* Non-SMS Type Constraints */
607 nikolajev 16
        template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlanAny := {
599 tepelmann 17
            extBit := ?,
18
            typeOfNumber := ?,
19
            numberingPlanId := ?
20
        }
21
 
607 nikolajev 22
        template(value) TypeOfNumberingPlan m_TypeOfNumberingPlan := {
599 tepelmann 23
            extBit := '1'B,
24
            typeOfNumber := '001'B,  // international number
25
            numberingPlanId :=
26
                '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163)
27
        }
28
 
607 nikolajev 29
        template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlan := mw_TypeOfNumberingPlanAny;
599 tepelmann 30
 
520 garciay 31
        /* End Non-SMS Type Constraints */
607 nikolajev 32
        template(value) RP_OriginatorAddress_dl m_RP_OriginatorAddress_dl := {
599 tepelmann 33
            spare := omit,
34
            iei := omit,
35
            iel := '06'O,  // 6 semi-octets
607 nikolajev 36
            typeOfNumberingPlan := m_TypeOfNumberingPlan,
599 tepelmann 37
            digits := '001122'O
38
        }
39
 
607 nikolajev 40
        template(present) RP_OriginatorAddress_ul mw_RP_OriginatorAddress_ul := {
599 tepelmann 41
            spare := omit,
42
            iei := omit,
43
            iel := '00'O
44
        }
45
 
607 nikolajev 46
        template(present) RP_DestinationAddress_ul mw_RP_DestinationAddress_ul := {
599 tepelmann 47
            spare := omit,
48
            iei := omit,
49
            iel := ?,
607 nikolajev 50
            typeOfNumberingPlan := mw_TypeOfNumberingPlan,
599 tepelmann 51
            digits := ?
52
        }
607 nikolajev 53
        template(omit) RP_DestinationAddress_dl m_RP_DestinationAddress_dl := {
599 tepelmann 54
            spare := omit,
55
            iei := omit,
56
            iel := '00'O
57
        }
58
 
607 nikolajev 59
        template(omit) RP_UserData m_RP_UserData_DELIVER(
602 nikolajev 60
            octetstring p_Digits
61
        ) := {
599 tepelmann 62
            spare := omit,
63
            iei := omit,
64
            iel := int2oct((153 + lengthof(p_Digits)), 1),
607 nikolajev 65
            tP_PDU := {SMS_DELIVER := m_SMS_DELIVER(p_Digits)}
599 tepelmann 66
        }
67
 
607 nikolajev 68
        template(value) RP_UserData m_RP_UserData_SUBMIT_REPORT := {
599 tepelmann 69
            spare := '0'B,
607 nikolajev 70
            iei := c_IEI_RP_UserData,
599 tepelmann 71
            iel := '0A'O,  // the TPDU data length is 10 octets
607 nikolajev 72
            tP_PDU := {SMS_SUBMIT_REPORT := m_SMS_SUBMIT_REPORT}
599 tepelmann 73
        }
607 nikolajev 74
        template(value) RP_UserData m_RP_UserData_STATUS_REPORT(
599 tepelmann 75
            template(value) TP_MessageReference_Type p_MessageRef,
76
            template(value) TP_Address_Type p_RecipientAddress,
77
            template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
607 nikolajev 78
        ) modifies m_RP_UserData_SUBMIT_REPORT := {
79
            tP_PDU := {SMS_STATUS_REPORT := m_SMS_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)}
599 tepelmann 80
        }
81
 
607 nikolajev 82
        template(present) RP_UserData mw_RP_UserData_SUBMIT := {
599 tepelmann 83
            spare := omit,
84
            iei := omit,
85
            iel := ?,
607 nikolajev 86
            tP_PDU := {SMS_SUBMIT := mw_SMS_SUBMIT_VPF_REF}
599 tepelmann 87
        }
88
 
607 nikolajev 89
        template(present) RP_UserData mw_RP_UserData_DELIVER_REPORT := {
599 tepelmann 90
            spare := '0'B,
607 nikolajev 91
            iei := c_IEI_RP_UserData,
599 tepelmann 92
            iel := ?,
607 nikolajev 93
            tP_PDU := {SMS_DELIVER_REPORT := mw_SMS_DELIVER_REPORT}
599 tepelmann 94
        }
95
 
520 garciay 96
        /* End SM-RP Type Constraints */
97
        /* SM-RP PDU Constraints */
607 nikolajev 98
        template(value) RP_DATA_dl_Type m_RP_DATA_dl_base := {
599 tepelmann 99
            spare5 := '00000'B,
607 nikolajev 100
            rP_MessageTypeIndicator := c_MT_RP_DATA_dl,
599 tepelmann 101
            rP_MessageReference := '00'O,
607 nikolajev 102
            rP_OriginatorAddress := m_RP_OriginatorAddress_dl,
103
            rP_DestinationAddress := m_RP_DestinationAddress_dl,
104
            rP_UserData := m_RP_UserData_DELIVER('0000'O)
599 tepelmann 105
        }
106
 
607 nikolajev 107
        template(value) RP_DATA_dl_Type m_RP_DATA_dl_DELIVER(
602 nikolajev 108
            octetstring p_Digits
607 nikolajev 109
        ) modifies m_RP_DATA_dl_base := {rP_UserData := m_RP_UserData_DELIVER(p_Digits)}
599 tepelmann 110
 
607 nikolajev 111
        template(value) RP_DATA_dl_Type m_RP_DATA_dl_STATUS_REPORT(
599 tepelmann 112
            template(value) TP_MessageReference_Type p_MessageRef,
113
            template(value) TP_Address_Type p_RecipientAddress,
114
            template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
607 nikolajev 115
        ) modifies m_RP_DATA_dl_base := {
116
            rP_UserData := m_RP_UserData_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)
599 tepelmann 117
        }
118
 
119
 
607 nikolajev 120
        template(present) RP_DATA_ul_Type mw_RP_DATA_ul_SUBMIT := {
599 tepelmann 121
            spare5 := '00000'B,
607 nikolajev 122
            rP_MessageTypeIndicator := c_MT_RP_DATA_ul,
599 tepelmann 123
            rP_MessageReference := ?,
607 nikolajev 124
            rP_OriginatorAddress := mw_RP_OriginatorAddress_ul,
125
            rP_DestinationAddress := mw_RP_DestinationAddress_ul,
126
            rP_UserData := mw_RP_UserData_SUBMIT
599 tepelmann 127
        }
128
 
607 nikolajev 129
        template(value) RP_ACK_Type m_RP_ACK_SUBMIT_REPORT(
602 nikolajev 130
            template(value) Oct1 p_msgReference := '00'O
131
        ) := {
599 tepelmann 132
            spare5 := '00000'B,
607 nikolajev 133
            rP_MessageTypeIndicator := c_MT_RP_ACK_dl,
599 tepelmann 134
            rP_MessageReference := p_msgReference,
607 nikolajev 135
            rP_UserData := m_RP_UserData_SUBMIT_REPORT
599 tepelmann 136
        }
137
 
607 nikolajev 138
        template(present) RP_ACK_Type mw_RP_ACK_DELIVER_REPORT := {
599 tepelmann 139
            spare5 := '00000'B,
607 nikolajev 140
            rP_MessageTypeIndicator := c_MT_RP_ACK_ul,
599 tepelmann 141
            rP_MessageReference := ?,
607 nikolajev 142
            rP_UserData := mw_RP_UserData_DELIVER_REPORT
599 tepelmann 143
        }
144
 
520 garciay 145
        /* End SM-RP PDU Constraints */
146
        /* SM-TP Type Constraints */
607 nikolajev 147
        template(value) TP_ProtocolIdentifier_Type mw_TP_ProtocolIdentifier := {
599 tepelmann 148
            pidType := '01'B,
149
            interworking := '0'B,
150
            pidValue := '00000'B
151
        }
152
 
607 nikolajev 153
        template(value) TP_ProtocolIdentifier_Type m_TP_ProtocolIdentifier := {
599 tepelmann 154
            pidType := '01'B,
155
            interworking := '0'B,
156
            pidValue := '00000'B
157
        }
158
 
607 nikolajev 159
        template(value) TP_DataCodingScheme_Type m_TP_DataCodingScheme := {
599 tepelmann 160
            codingGroup := '0000'B,
161
            codeValue := '0000'B
162
        }
163
 
607 nikolajev 164
        template(present) TP_Address_Type mw_TP_AddressAny := {
599 tepelmann 165
            iel := ?,
607 nikolajev 166
            typeOfNumberingPlan := mw_TypeOfNumberingPlanAny,
599 tepelmann 167
            digits := *
168
        }
169
 
607 nikolajev 170
        template(value) TP_Address_Type m_TP_Address(
602 nikolajev 171
            octetstring p_Digits
172
        ) := {
599 tepelmann 173
            iel := int2oct(2 * lengthof(p_Digits), 1),
174
            // length is number of useful semi-octets
175
            // as p_digits is declared as octetstring the number must be even
607 nikolajev 176
            typeOfNumberingPlan := m_TypeOfNumberingPlan,
599 tepelmann 177
            digits := p_Digits
178
        }
179
 
607 nikolajev 180
        template(value) TP_ParameterIndicator_Type m_TP_ParameterIndicator := {
599 tepelmann 181
            extBit1 := '0'B,
182
            spare4 := '0000'B,
183
            tP_UDL := '0'B,
184
            tP_DCS := '0'B,
185
            tP_PID := '1'B
186
        }
187
 
520 garciay 188
        /* End SM-TP Type Constraints */
189
        /* SM-TP PDU Constraints */
607 nikolajev 190
        template(value) SMS_DELIVER_Type m_SMS_DELIVER(
602 nikolajev 191
            octetstring p_Digits
192
        ) := {
599 tepelmann 193
            tP_ReplyPath := '0'B,
194
            tP_UserDataHeaderIndicator := '0'B,
195
            tP_StatusReportIndication := '1'B,
196
            spare2 := '00'B,
197
            tP_MoreMessagesToSend := '0'B,
607 nikolajev 198
            tP_MessageTypeIndicator := c_MT_SMS_DELIVER,
199
            tP_OriginatingAddress := m_TP_Address(p_Digits),
200
            tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
201
            tP_DataCodingScheme_Type := m_TP_DataCodingScheme,
599 tepelmann 202
            tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0),  // Time Zone 0 assumed
203
            tP_UserDataLength := int2oct(160, 1),
607 nikolajev 204
            tP_UserData := f_IA5_2oct(c_Fox)
599 tepelmann 205
        }
206
 
607 nikolajev 207
        template(present) SMS_DELIVER_REPORT_Type mw_SMS_DELIVER_REPORT := {
599 tepelmann 208
            spare1 := '0'B,
209
            tP_UserDataHeaderIndicator := '0'B,
210
            spare4 := '0000'B,
607 nikolajev 211
            tP_MessageTypeIndicator := c_MT_SMS_DELIVER_REPORT,
599 tepelmann 212
            tP_FailureCause := omit,
213
            tP_ParameterIndicator := ?,
607 nikolajev 214
            tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier,
599 tepelmann 215
            tP_DataCodingScheme_Type := *,
216
            tP_UserDataLength := *,
217
            tP_UserData := *
218
        }
219
 
607 nikolajev 220
        template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT := {
599 tepelmann 221
            tP_ReplyPath := '0'B,
222
            tP_UserDataHeaderIndicator := '0'B,
223
            tP_StatusReportRequest := '1'B,
224
            tP_ValidityPeriodFormat := '??'B,
225
            tP_RejectDuplicates := '0'B,
607 nikolajev 226
            tP_MessageTypeIndicator := c_MT_SMS_SUBMIT,
599 tepelmann 227
            tP_MessageReference := ?,
607 nikolajev 228
            tP_DestinationAddress := mw_TP_AddressAny,
229
            tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier,
599 tepelmann 230
            tP_DataCodingScheme_Type := ?,
231
            tP_ValidityPeriod := *,
232
            tP_UserDataLength := int2oct(160, 1),
233
            tP_UserData :=
234
                ? // any data will do: 140 octets
235
        }
236
 
607 nikolajev 237
        template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_NP modifies mw_SMS_SUBMIT := {
599 tepelmann 238
            tP_ValidityPeriodFormat := '00'B,
239
            tP_ValidityPeriod := omit
240
        }
241
 
607 nikolajev 242
        template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_REF modifies mw_SMS_SUBMIT := {
599 tepelmann 243
            tP_ValidityPeriodFormat := '10'B,
244
            tP_ValidityPeriod := ?
245
        }
246
 
607 nikolajev 247
        template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ENH modifies mw_SMS_SUBMIT := {
599 tepelmann 248
            tP_ValidityPeriodFormat := '01'B,
249
            tP_ValidityPeriod := ?
250
        }
251
 
607 nikolajev 252
        template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ABS modifies mw_SMS_SUBMIT := {
599 tepelmann 253
            tP_ValidityPeriodFormat := '11'B,
254
            tP_ValidityPeriod := ?
255
        }
256
 
607 nikolajev 257
        template(value) SMS_SUBMIT_REPORT_Type m_SMS_SUBMIT_REPORT := {
599 tepelmann 258
            spare1 := '0'B,
259
            tP_UserDataHeaderIndicator := '0'B,
260
            spare4 := '0000'B,
607 nikolajev 261
            tP_MessageTypeIndicator := c_MT_SMS_SUBMIT_REPORT,
599 tepelmann 262
            tP_FailureCause := omit,
607 nikolajev 263
            tP_ParameterIndicator := m_TP_ParameterIndicator,
599 tepelmann 264
            tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0),  // Time Zone 0 assumed
607 nikolajev 265
            tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
599 tepelmann 266
            tP_DataCodingScheme_Type := omit,
267
            tP_UserDataLength := omit,
268
            tP_UserData := omit
269
        }
270
 
607 nikolajev 271
        template(value) SMS_STATUS_REPORT_Type m_SMS_STATUS_REPORT(
599 tepelmann 272
            template(value) TP_MessageReference_Type p_MessageRef,
273
            template(value) TP_Address_Type p_RA,
274
            template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
275
        ) := {
276
            // TS 34.229-1 clause A.7.5
277
            spare1 := '0'B,
278
            tP_UserDataHeaderIndicator := '0'B,
279
            tP_StatusReportQualifier := '0'B,
280
            spare2 := '00'B,
281
            tP_MoreMessagesToSend := '0'B,
607 nikolajev 282
            tP_MessageTypeIndicator := c_MT_SMS_STATUS_REPORT,
599 tepelmann 283
            tP_MessageReference := p_MessageRef,
284
            tP_RecipientAddress := p_RA,
285
            tP_ServiceCentreTimeStamp := p_SCTP,
286
            tP_DischargeTime := '00000000000000'H,
287
            tP_Status := {
288
                reserved := '0'B,
289
                status := '0000000'B
290
            },
607 nikolajev 291
            tP_ParameterIndicator := m_TP_ParameterIndicator,
292
            tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
599 tepelmann 293
            tP_DataCodingScheme_Type := omit,
294
            tP_UserDataLength := omit,
295
            tP_UserData := omit
296
        }
297
 
298
 
299
 
300
 
301
 
302
    /* End SM-TP PDU Constraints */
520 garciay 303
    } // group SMS_Templates_Group
304
} // End of module LibSip_SMSTypesAndValues