1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony.cdma.sms;
18 
19 
20 import com.android.internal.telephony.cdma.sms.CdmaSmsSubaddress;
21 
22 public final class SmsEnvelope {
23     /**
24      * Message Types
25      * (See 3GPP2 C.S0015-B 3.4.1)
26      */
27     static public final int MESSAGE_TYPE_POINT_TO_POINT   = 0x00;
28     static public final int MESSAGE_TYPE_BROADCAST        = 0x01;
29     static public final int MESSAGE_TYPE_ACKNOWLEDGE      = 0x02;
30 
31     /**
32      * Supported Teleservices
33      * (See 3GPP2 N.S0005 and TIA-41)
34      */
35     static public final int TELESERVICE_NOT_SET           = 0x0000;
36     static public final int TELESERVICE_WMT               = 0x1002;
37     static public final int TELESERVICE_VMN               = 0x1003;
38     static public final int TELESERVICE_WAP               = 0x1004;
39     static public final int TELESERVICE_WEMT              = 0x1005;
40     static public final int TELESERVICE_SCPT              = 0x1006;
41 
42     /**
43      * The following are defined as extensions to the standard teleservices
44      */
45     // Voice mail notification through Message Waiting Indication in CDMA mode or Analog mode.
46     // Defined in 3GPP2 C.S-0005, 3.7.5.6, an Info Record containing an 8-bit number with the
47     // number of messages waiting, it's used by some CDMA carriers for a voice mail count.
48     static public final int TELESERVICE_MWI               = 0x40000;
49 
50     // Service Categories for Cell Broadcast, see 3GPP2 C.R1001 table 9.3.1-1
51     // static final int SERVICE_CATEGORY_EMERGENCY      = 0x0001;
52     //...
53 
54     // CMAS alert service category assignments, see 3GPP2 C.R1001 table 9.3.3-1
55     public static final int SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT  = 0x1000;
56     public static final int SERVICE_CATEGORY_CMAS_EXTREME_THREAT            = 0x1001;
57     public static final int SERVICE_CATEGORY_CMAS_SEVERE_THREAT             = 0x1002;
58     public static final int SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 0x1003;
59     public static final int SERVICE_CATEGORY_CMAS_TEST_MESSAGE              = 0x1004;
60     public static final int SERVICE_CATEGORY_CMAS_LAST_RESERVED_VALUE       = 0x10ff;
61 
62     /**
63      * Provides the type of a SMS message like point to point, broadcast or acknowledge
64      */
65     public int messageType;
66 
67     /**
68      * The 16-bit Teleservice parameter identifies which upper layer service access point is sending
69      * or receiving the message.
70      * (See 3GPP2 C.S0015-B, v2, 3.4.3.1)
71      */
72     public int teleService = TELESERVICE_NOT_SET;
73 
74     /**
75      * The 16-bit service category parameter identifies the type of service provided
76      * by the SMS message.
77      * (See 3GPP2 C.S0015-B, v2, 3.4.3.2)
78      */
79     public int serviceCategory;
80 
81     /**
82      * The origination address identifies the originator of the SMS message.
83      * (See 3GPP2 C.S0015-B, v2, 3.4.3.3)
84      */
85     public CdmaSmsAddress origAddress;
86 
87     /**
88      * The destination address identifies the target of the SMS message.
89      * (See 3GPP2 C.S0015-B, v2, 3.4.3.3)
90      */
91     public CdmaSmsAddress destAddress;
92 
93     /**
94      * The origination subaddress identifies the originator of the SMS message.
95      * (See 3GPP2 C.S0015-B, v2, 3.4.3.4)
96      */
97     public CdmaSmsSubaddress origSubaddress;
98 
99     /**
100      * The 6-bit bearer reply parameter is used to request the return of a
101      * SMS Acknowledge Message.
102      * (See 3GPP2 C.S0015-B, v2, 3.4.3.5)
103      */
104     public int bearerReply;
105 
106     /**
107      * Cause Code values:
108      * The cause code parameters are an indication whether an SMS error has occurred and if so,
109      * whether the condition is considered temporary or permanent.
110      * ReplySeqNo 6-bit value,
111      * ErrorClass 2-bit value,
112      * CauseCode 0-bit or 8-bit value
113      * (See 3GPP2 C.S0015-B, v2, 3.4.3.6)
114      */
115     public byte replySeqNo;
116     public byte errorClass;
117     public byte causeCode;
118 
119     /**
120      * encoded bearer data
121      * (See 3GPP2 C.S0015-B, v2, 3.4.3.7)
122      */
123     public byte[] bearerData;
124 
SmsEnvelope()125     public SmsEnvelope() {
126         // nothing to see here
127     }
128 
129 }
130 
131