xref: /aosp_15_r20/hardware/ril/include/telephony/ril_cdma_sms.h (revision 062a843b36e31144e02d312b6b2de34642e6750e)
1*062a843bSAndroid Build Coastguard Worker /*
2*062a843bSAndroid Build Coastguard Worker  * Copyright (C) 2006 The Android Open Source Project
3*062a843bSAndroid Build Coastguard Worker  *
4*062a843bSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*062a843bSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*062a843bSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*062a843bSAndroid Build Coastguard Worker  *
8*062a843bSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*062a843bSAndroid Build Coastguard Worker  *
10*062a843bSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*062a843bSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*062a843bSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*062a843bSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*062a843bSAndroid Build Coastguard Worker  * limitations under the License.
15*062a843bSAndroid Build Coastguard Worker  */
16*062a843bSAndroid Build Coastguard Worker 
17*062a843bSAndroid Build Coastguard Worker /*
18*062a843bSAndroid Build Coastguard Worker  * ISSUES:
19*062a843bSAndroid Build Coastguard Worker  *
20*062a843bSAndroid Build Coastguard Worker  */
21*062a843bSAndroid Build Coastguard Worker 
22*062a843bSAndroid Build Coastguard Worker /**
23*062a843bSAndroid Build Coastguard Worker  * TODO
24*062a843bSAndroid Build Coastguard Worker  *
25*062a843bSAndroid Build Coastguard Worker  *
26*062a843bSAndroid Build Coastguard Worker  */
27*062a843bSAndroid Build Coastguard Worker 
28*062a843bSAndroid Build Coastguard Worker 
29*062a843bSAndroid Build Coastguard Worker #ifndef ANDROID_RIL_CDMA_SMS_H
30*062a843bSAndroid Build Coastguard Worker #define ANDROID_RIL_CDMA_SMS_H 1
31*062a843bSAndroid Build Coastguard Worker 
32*062a843bSAndroid Build Coastguard Worker #include <stdlib.h>
33*062a843bSAndroid Build Coastguard Worker 
34*062a843bSAndroid Build Coastguard Worker #ifdef __cplusplus
35*062a843bSAndroid Build Coastguard Worker extern "C" {
36*062a843bSAndroid Build Coastguard Worker #endif
37*062a843bSAndroid Build Coastguard Worker 
38*062a843bSAndroid Build Coastguard Worker /* Used by RIL_REQUEST_CDMA_SEND_SMS and RIL_UNSOL_RESPONSE_CDMA_NEW_SMS */
39*062a843bSAndroid Build Coastguard Worker 
40*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_ADDRESS_MAX     36
41*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_SUBADDRESS_MAX  36
42*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_BEARER_DATA_MAX 255
43*062a843bSAndroid Build Coastguard Worker 
44*062a843bSAndroid Build Coastguard Worker typedef enum {
45*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DIGIT_MODE_4_BIT = 0,     /* DTMF digits */
46*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DIGIT_MODE_8_BIT = 1,
47*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DIGIT_MODE_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
48*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_DigitMode;
49*062a843bSAndroid Build Coastguard Worker 
50*062a843bSAndroid Build Coastguard Worker typedef enum {
51*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_MODE_NOT_DATA_NETWORK = 0,
52*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_MODE_DATA_NETWORK     = 1,
53*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_MODE_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
54*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_NumberMode;
55*062a843bSAndroid Build Coastguard Worker 
56*062a843bSAndroid Build Coastguard Worker typedef enum {
57*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_UNKNOWN                   = 0,
58*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_INTERNATIONAL_OR_DATA_IP  = 1,
59*062a843bSAndroid Build Coastguard Worker       /* INTERNATIONAL is used when number mode is not data network address.
60*062a843bSAndroid Build Coastguard Worker        * DATA_IP is used when the number mode is data network address
61*062a843bSAndroid Build Coastguard Worker        */
62*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_NATIONAL_OR_INTERNET_MAIL = 2,
63*062a843bSAndroid Build Coastguard Worker       /* NATIONAL is used when the number mode is not data network address.
64*062a843bSAndroid Build Coastguard Worker        * INTERNET_MAIL is used when the number mode is data network address.
65*062a843bSAndroid Build Coastguard Worker        * For INTERNET_MAIL, in the address data "digits", each byte contains
66*062a843bSAndroid Build Coastguard Worker        * an ASCII character. Examples are "[email protected],[email protected] - ref TIA/EIA-637A 3.4.3.3
67*062a843bSAndroid Build Coastguard Worker        */
68*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_NETWORK                   = 3,
69*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_SUBSCRIBER                = 4,
70*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_ALPHANUMERIC              = 5,
71*062a843bSAndroid Build Coastguard Worker       /* GSM SMS: address value is GSM 7-bit chars */
72*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_ABBREVIATED               = 6,
73*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_RESERVED_7                = 7,
74*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_TYPE_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
75*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_NumberType;
76*062a843bSAndroid Build Coastguard Worker 
77*062a843bSAndroid Build Coastguard Worker typedef enum {
78*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_UNKNOWN     = 0,
79*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_TELEPHONY   = 1,      /* CCITT E.164 and E.163, including ISDN plan */
80*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_2  = 2,
81*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_DATA        = 3,      /* CCITT X.121 */
82*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_TELEX       = 4,      /* CCITT F.69 */
83*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_5  = 5,
84*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_6  = 6,
85*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_7  = 7,
86*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_8  = 8,
87*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_PRIVATE     = 9,
88*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_10 = 10,
89*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_11 = 11,
90*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_12 = 12,
91*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_13 = 13,
92*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_14 = 14,
93*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_RESERVED_15 = 15,
94*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NUMBER_PLAN_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
95*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_NumberPlan;
96*062a843bSAndroid Build Coastguard Worker 
97*062a843bSAndroid Build Coastguard Worker typedef struct {
98*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DigitMode digit_mode;
99*062a843bSAndroid Build Coastguard Worker       /* Indicates 4-bit or 8-bit */
100*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NumberMode number_mode;
101*062a843bSAndroid Build Coastguard Worker       /* Used only when digitMode is 8-bit */
102*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NumberType number_type;
103*062a843bSAndroid Build Coastguard Worker       /* Used only when digitMode is 8-bit.
104*062a843bSAndroid Build Coastguard Worker        * To specify an international address, use the following:
105*062a843bSAndroid Build Coastguard Worker        * digitMode = RIL_CDMA_SMS_DIGIT_MODE_8_BIT
106*062a843bSAndroid Build Coastguard Worker        * numberMode = RIL_CDMA_SMS_NOT_DATA_NETWORK
107*062a843bSAndroid Build Coastguard Worker        * numberType = RIL_CDMA_SMS_NUMBER_TYPE_INTERNATIONAL_OR_DATA_IP
108*062a843bSAndroid Build Coastguard Worker        * numberPlan = RIL_CDMA_SMS_NUMBER_PLAN_TELEPHONY
109*062a843bSAndroid Build Coastguard Worker        * numberOfDigits = number of digits
110*062a843bSAndroid Build Coastguard Worker        * digits = ASCII digits, e.g. '1', '2', '3'3, '4', and '5'
111*062a843bSAndroid Build Coastguard Worker        */
112*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NumberPlan number_plan;
113*062a843bSAndroid Build Coastguard Worker       /* Used only when digitMode is 8-bit */
114*062a843bSAndroid Build Coastguard Worker     unsigned char number_of_digits;
115*062a843bSAndroid Build Coastguard Worker     unsigned char digits[ RIL_CDMA_SMS_ADDRESS_MAX ];
116*062a843bSAndroid Build Coastguard Worker       /* Each byte in this array represnts a 4-bit or 8-bit digit of address data */
117*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Address;
118*062a843bSAndroid Build Coastguard Worker 
119*062a843bSAndroid Build Coastguard Worker typedef enum {
120*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_SUBADDRESS_TYPE_NSAP           = 0,    /* CCITT X.213 or ISO 8348 AD2 */
121*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_SUBADDRESS_TYPE_USER_SPECIFIED = 1,    /* e.g. X.25 */
122*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_SUBADDRESS_TYPE_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
123*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_SubaddressType;
124*062a843bSAndroid Build Coastguard Worker 
125*062a843bSAndroid Build Coastguard Worker typedef struct {
126*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_SubaddressType subaddressType;
127*062a843bSAndroid Build Coastguard Worker     /* 1 means the last byte's lower 4 bits should be ignored */
128*062a843bSAndroid Build Coastguard Worker     unsigned char odd;
129*062a843bSAndroid Build Coastguard Worker     unsigned char number_of_digits;
130*062a843bSAndroid Build Coastguard Worker     /* Each byte respresents a 8-bit digit of subaddress data */
131*062a843bSAndroid Build Coastguard Worker     unsigned char digits[ RIL_CDMA_SMS_SUBADDRESS_MAX ];
132*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Subaddress;
133*062a843bSAndroid Build Coastguard Worker 
134*062a843bSAndroid Build Coastguard Worker typedef struct {
135*062a843bSAndroid Build Coastguard Worker     int uTeleserviceID;
136*062a843bSAndroid Build Coastguard Worker     unsigned char bIsServicePresent;
137*062a843bSAndroid Build Coastguard Worker     int uServicecategory;
138*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Address sAddress;
139*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Subaddress sSubAddress;
140*062a843bSAndroid Build Coastguard Worker     int uBearerDataLen;
141*062a843bSAndroid Build Coastguard Worker     unsigned char aBearerData[ RIL_CDMA_SMS_BEARER_DATA_MAX ];
142*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Message;
143*062a843bSAndroid Build Coastguard Worker 
144*062a843bSAndroid Build Coastguard Worker /* Used by RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE */
145*062a843bSAndroid Build Coastguard Worker 
146*062a843bSAndroid Build Coastguard Worker typedef enum {
147*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_NO_ERROR       = 0,
148*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ERROR          = 1,
149*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ERROR_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
150*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_ErrorClass;
151*062a843bSAndroid Build Coastguard Worker 
152*062a843bSAndroid Build Coastguard Worker typedef struct {
153*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ErrorClass uErrorClass;
154*062a843bSAndroid Build Coastguard Worker     int uSMSCauseCode;  /* As defined in N.S00005, 6.5.2.125.
155*062a843bSAndroid Build Coastguard Worker                            Currently, only 35 (resource shortage) and
156*062a843bSAndroid Build Coastguard Worker                            39 (other terminal problem) are reported. */
157*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Ack;
158*062a843bSAndroid Build Coastguard Worker 
159*062a843bSAndroid Build Coastguard Worker /* Used by RIL_REQUEST_CDMA_SMS_GET_BROADCAST_CONFIG and
160*062a843bSAndroid Build Coastguard Worker    RIL_REQUEST_CDMA_SMS_SET_BROADCAST_CONFIG */
161*062a843bSAndroid Build Coastguard Worker 
162*062a843bSAndroid Build Coastguard Worker typedef struct {
163*062a843bSAndroid Build Coastguard Worker     int service_category;
164*062a843bSAndroid Build Coastguard Worker     int language;
165*062a843bSAndroid Build Coastguard Worker     unsigned char selected;
166*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_BroadcastSmsConfigInfo;
167*062a843bSAndroid Build Coastguard Worker 
168*062a843bSAndroid Build Coastguard Worker /* Used by RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM */
169*062a843bSAndroid Build Coastguard Worker 
170*062a843bSAndroid Build Coastguard Worker typedef struct {
171*062a843bSAndroid Build Coastguard Worker     int status;     /* Status of message.  See TS 27.005 3.1, "<stat>": */
172*062a843bSAndroid Build Coastguard Worker                   /*      0 = "REC UNREAD"    */
173*062a843bSAndroid Build Coastguard Worker                   /*      1 = "REC READ"      */
174*062a843bSAndroid Build Coastguard Worker                   /*      2 = "STO UNSENT"    */
175*062a843bSAndroid Build Coastguard Worker                   /*      3 = "STO SENT"      */
176*062a843bSAndroid Build Coastguard Worker 
177*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Message message;
178*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_WriteArgs;
179*062a843bSAndroid Build Coastguard Worker 
180*062a843bSAndroid Build Coastguard Worker 
181*062a843bSAndroid Build Coastguard Worker /* Used by RIL_REQUEST_ENCODE_CDMA_SMS and RIL_REQUEST_DECODE_CDMA_SMS*/
182*062a843bSAndroid Build Coastguard Worker 
183*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_MAX_SND_SIZE           128
184*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_EO_DATA_SEGMENT_MAX    131 /* 140 - 3 - 6 */
185*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_MAX_UD_HEADERS         7
186*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_USER_DATA_MAX     229
187*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_ADDRESS_MAX            36
188*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_LARGE_PIC_SIZE     128
189*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_SMALL_PIC_SIZE     32
190*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_VAR_PIC_SIZE       134
191*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_ANIM_NUM_BITMAPS   4
192*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_LARGE_BITMAP_SIZE  32
193*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_SMALL_BITMAP_SIZE  8
194*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_UDH_OTHER_SIZE         226
195*062a843bSAndroid Build Coastguard Worker #define RIL_CDMA_SMS_IP_ADDRESS_SIZE        4
196*062a843bSAndroid Build Coastguard Worker 
197*062a843bSAndroid Build Coastguard Worker /* ------------------- */
198*062a843bSAndroid Build Coastguard Worker /* ---- User Data ---- */
199*062a843bSAndroid Build Coastguard Worker /* ------------------- */
200*062a843bSAndroid Build Coastguard Worker typedef enum {
201*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_CONCAT_8         = 0x00,
202*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_SPECIAL_SM,
203*062a843bSAndroid Build Coastguard Worker     /* 02 - 03    Reserved */
204*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_PORT_8           = 0x04,
205*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_PORT_16,
206*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_SMSC_CONTROL,
207*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_SOURCE,
208*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_CONCAT_16,
209*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_WCMP,
210*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_FORMATING,
211*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_PRE_DEF_SOUND,
212*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_USER_DEF_SOUND,
213*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_PRE_DEF_ANIM,
214*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_LARGE_ANIM,
215*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_SMALL_ANIM,
216*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_LARGE_PICTURE,
217*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_SMALL_PICTURE,
218*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_VAR_PICTURE,
219*062a843bSAndroid Build Coastguard Worker 
220*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_USER_PROMPT      = 0x13,
221*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_EXTENDED_OBJECT  = 0x14,
222*062a843bSAndroid Build Coastguard Worker 
223*062a843bSAndroid Build Coastguard Worker     /* 15 - 1F    Reserved for future EMS */
224*062a843bSAndroid Build Coastguard Worker 
225*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_RFC822           = 0x20,
226*062a843bSAndroid Build Coastguard Worker 
227*062a843bSAndroid Build Coastguard Worker     /*  21 - 6F    Reserved for future use */
228*062a843bSAndroid Build Coastguard Worker     /*  70 - 7f    Reserved for (U)SIM Toolkit Security Headers */
229*062a843bSAndroid Build Coastguard Worker     /*  80 - 9F    SME to SME specific use */
230*062a843bSAndroid Build Coastguard Worker     /*  A0 - BF    Reserved for future use */
231*062a843bSAndroid Build Coastguard Worker     /*  C0 - DF    SC specific use */
232*062a843bSAndroid Build Coastguard Worker     /*  E0 - FF    Reserved for future use */
233*062a843bSAndroid Build Coastguard Worker 
234*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_OTHER            = 0xFFFF, /* For unsupported or proprietary headers */
235*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_ID_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
236*062a843bSAndroid Build Coastguard Worker 
237*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhId;
238*062a843bSAndroid Build Coastguard Worker 
239*062a843bSAndroid Build Coastguard Worker typedef struct {
240*062a843bSAndroid Build Coastguard Worker     /*indicates the reference number for a particular concatenated short message. */
241*062a843bSAndroid Build Coastguard Worker     /*it is constant for every short message which makes up a particular concatenated short message*/
242*062a843bSAndroid Build Coastguard Worker     unsigned char       msg_ref;
243*062a843bSAndroid Build Coastguard Worker 
244*062a843bSAndroid Build Coastguard Worker     /*indicates the total number of short messages within the concatenated short message.
245*062a843bSAndroid Build Coastguard Worker      The value shall start at 1 and remain constant for every
246*062a843bSAndroid Build Coastguard Worker      short message which makes up the concatenated short message.
247*062a843bSAndroid Build Coastguard Worker      if it is 0 then the receiving entity shall ignore the whole Information Element*/
248*062a843bSAndroid Build Coastguard Worker     unsigned char       total_sm;
249*062a843bSAndroid Build Coastguard Worker 
250*062a843bSAndroid Build Coastguard Worker     /*
251*062a843bSAndroid Build Coastguard Worker      * it indicates the sequence number of a particular short message within the concatenated short
252*062a843bSAndroid Build Coastguard Worker      * message. The value shall start at 1 and increment by one for every short message sent
253*062a843bSAndroid Build Coastguard Worker      * within the concatenated short message. If the value is zero or the value is
254*062a843bSAndroid Build Coastguard Worker      * greater than the value in octet 2 then the receiving
255*062a843bSAndroid Build Coastguard Worker      * entity shall ignore the whole Information Element.
256*062a843bSAndroid Build Coastguard Worker      */
257*062a843bSAndroid Build Coastguard Worker     unsigned char      seq_num;
258*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhConcat8;
259*062a843bSAndroid Build Coastguard Worker 
260*062a843bSAndroid Build Coastguard Worker /* GW message waiting actions
261*062a843bSAndroid Build Coastguard Worker */
262*062a843bSAndroid Build Coastguard Worker typedef enum {
263*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_NONE,
264*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_DISCARD,
265*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_STORE,
266*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_NONE_1111,
267*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_MAX32 = 0x10000000 /* Force constant ENUM size in structures */
268*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_GWMsgWaiting;
269*062a843bSAndroid Build Coastguard Worker 
270*062a843bSAndroid Build Coastguard Worker /* GW message waiting types
271*062a843bSAndroid Build Coastguard Worker */
272*062a843bSAndroid Build Coastguard Worker typedef enum {
273*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_VOICEMAIL,
274*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_FAX,
275*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_EMAIL,
276*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_OTHER,
277*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GW_MSG_WAITING_KIND_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
278*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_GWMsgWaitingKind;
279*062a843bSAndroid Build Coastguard Worker 
280*062a843bSAndroid Build Coastguard Worker typedef struct {
281*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GWMsgWaiting                 msg_waiting;
282*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_GWMsgWaitingKind             msg_waiting_kind;
283*062a843bSAndroid Build Coastguard Worker 
284*062a843bSAndroid Build Coastguard Worker     /*it indicates the number of messages of the type specified in Octet 1 waiting.*/
285*062a843bSAndroid Build Coastguard Worker     unsigned char                             message_count;
286*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhSpecialSM;
287*062a843bSAndroid Build Coastguard Worker 
288*062a843bSAndroid Build Coastguard Worker typedef struct {
289*062a843bSAndroid Build Coastguard Worker     unsigned char  dest_port;
290*062a843bSAndroid Build Coastguard Worker     unsigned char  orig_port;
291*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhWap8;
292*062a843bSAndroid Build Coastguard Worker 
293*062a843bSAndroid Build Coastguard Worker typedef struct {
294*062a843bSAndroid Build Coastguard Worker     unsigned short  dest_port;
295*062a843bSAndroid Build Coastguard Worker     unsigned short  orig_port;
296*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhWap16;
297*062a843bSAndroid Build Coastguard Worker 
298*062a843bSAndroid Build Coastguard Worker typedef struct {
299*062a843bSAndroid Build Coastguard Worker     unsigned short      msg_ref;
300*062a843bSAndroid Build Coastguard Worker     unsigned char       total_sm;
301*062a843bSAndroid Build Coastguard Worker     unsigned char       seq_num;
302*062a843bSAndroid Build Coastguard Worker 
303*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhConcat16;
304*062a843bSAndroid Build Coastguard Worker 
305*062a843bSAndroid Build Coastguard Worker typedef enum {
306*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_LEFT_ALIGNMENT = 0,
307*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_CENTER_ALIGNMENT,
308*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_RIGHT_ALIGNMENT,
309*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_DEFAULT_ALIGNMENT,
310*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_MAX_ALIGNMENT,
311*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_ALIGNMENT_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
312*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhAlignment;
313*062a843bSAndroid Build Coastguard Worker 
314*062a843bSAndroid Build Coastguard Worker typedef enum {
315*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_NORMAL = 0,
316*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_LARGE,
317*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_SMALL,
318*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_RESERVED,
319*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_MAX,
320*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_FONT_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
321*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhFontSize;
322*062a843bSAndroid Build Coastguard Worker 
323*062a843bSAndroid Build Coastguard Worker typedef enum {
324*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BLACK          = 0x0,
325*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_GREY      = 0x1,
326*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_RED       = 0x2,
327*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_YELLOW    = 0x3,
328*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_GREEN     = 0x4,
329*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_CYAN      = 0x5,
330*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_BLUE      = 0x6,
331*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_DARK_MAGENTA   = 0x7,
332*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_GREY           = 0x8,
333*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_WHITE          = 0x9,
334*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_RED     = 0xA,
335*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_YELLOW  = 0xB,
336*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_GREEN   = 0xC,
337*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_CYAN    = 0xD,
338*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_BLUE    = 0xE,
339*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_BRIGHT_MAGENTA = 0xF,
340*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_TEXT_COLOR_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
341*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhTextColor;
342*062a843bSAndroid Build Coastguard Worker 
343*062a843bSAndroid Build Coastguard Worker typedef struct {
344*062a843bSAndroid Build Coastguard Worker     unsigned char              start_position;
345*062a843bSAndroid Build Coastguard Worker     unsigned char              text_formatting_length;
346*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhAlignment  alignment_type ;       /*bit 0 and  bit 1*/
347*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhFontSize   font_size ;            /*bit 3 and  bit 2*/
348*062a843bSAndroid Build Coastguard Worker     unsigned char              style_bold;            /*bit 4 */
349*062a843bSAndroid Build Coastguard Worker     unsigned char              style_italic;          /*bit 5  */
350*062a843bSAndroid Build Coastguard Worker     unsigned char              style_underlined;      /*bit 6 */
351*062a843bSAndroid Build Coastguard Worker     unsigned char              style_strikethrough;   /*bit 7 */
352*062a843bSAndroid Build Coastguard Worker 
353*062a843bSAndroid Build Coastguard Worker     /* if FALSE, ignore the following color information */
354*062a843bSAndroid Build Coastguard Worker     unsigned char              is_color_present;
355*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhTextColor  text_color_foreground;
356*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhTextColor  text_color_background;
357*062a843bSAndroid Build Coastguard Worker 
358*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhTextFormating;
359*062a843bSAndroid Build Coastguard Worker 
360*062a843bSAndroid Build Coastguard Worker /* Predefined sound
361*062a843bSAndroid Build Coastguard Worker */
362*062a843bSAndroid Build Coastguard Worker typedef struct {
363*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
364*062a843bSAndroid Build Coastguard Worker     unsigned char       snd_number;
365*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhPreDefSound;
366*062a843bSAndroid Build Coastguard Worker 
367*062a843bSAndroid Build Coastguard Worker /* User Defined sound
368*062a843bSAndroid Build Coastguard Worker */
369*062a843bSAndroid Build Coastguard Worker typedef struct {
370*062a843bSAndroid Build Coastguard Worker     unsigned char       data_length;
371*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
372*062a843bSAndroid Build Coastguard Worker     unsigned char       user_def_sound[RIL_CDMA_SMS_UDH_MAX_SND_SIZE];
373*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhUserDefSound;
374*062a843bSAndroid Build Coastguard Worker 
375*062a843bSAndroid Build Coastguard Worker /* Large picture
376*062a843bSAndroid Build Coastguard Worker */
377*062a843bSAndroid Build Coastguard Worker typedef struct {
378*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
379*062a843bSAndroid Build Coastguard Worker     unsigned char       data[RIL_CDMA_SMS_UDH_LARGE_PIC_SIZE];
380*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhLargePictureData;
381*062a843bSAndroid Build Coastguard Worker 
382*062a843bSAndroid Build Coastguard Worker /* Small picture
383*062a843bSAndroid Build Coastguard Worker */
384*062a843bSAndroid Build Coastguard Worker typedef struct {
385*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
386*062a843bSAndroid Build Coastguard Worker     unsigned char       data[RIL_CDMA_SMS_UDH_SMALL_PIC_SIZE];
387*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhSmallPictureData;
388*062a843bSAndroid Build Coastguard Worker 
389*062a843bSAndroid Build Coastguard Worker /* Variable length picture
390*062a843bSAndroid Build Coastguard Worker */
391*062a843bSAndroid Build Coastguard Worker typedef struct {
392*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
393*062a843bSAndroid Build Coastguard Worker     unsigned char       width;    /* Number of pixels - Should be a mutliple of 8 */
394*062a843bSAndroid Build Coastguard Worker     unsigned char       height;
395*062a843bSAndroid Build Coastguard Worker     unsigned char       data[RIL_CDMA_SMS_UDH_VAR_PIC_SIZE];
396*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhVarPicture;
397*062a843bSAndroid Build Coastguard Worker 
398*062a843bSAndroid Build Coastguard Worker /* Predefined animation
399*062a843bSAndroid Build Coastguard Worker */
400*062a843bSAndroid Build Coastguard Worker typedef struct {
401*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
402*062a843bSAndroid Build Coastguard Worker     unsigned char       animation_number;
403*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhPreDefAnim;
404*062a843bSAndroid Build Coastguard Worker 
405*062a843bSAndroid Build Coastguard Worker /* Large animation
406*062a843bSAndroid Build Coastguard Worker */
407*062a843bSAndroid Build Coastguard Worker typedef struct {
408*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
409*062a843bSAndroid Build Coastguard Worker     unsigned char       data[RIL_CDMA_SMS_UDH_ANIM_NUM_BITMAPS][RIL_CDMA_SMS_UDH_LARGE_BITMAP_SIZE];
410*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhLargeAnim;
411*062a843bSAndroid Build Coastguard Worker 
412*062a843bSAndroid Build Coastguard Worker /* Small animation
413*062a843bSAndroid Build Coastguard Worker */
414*062a843bSAndroid Build Coastguard Worker typedef struct {
415*062a843bSAndroid Build Coastguard Worker     unsigned char       position;
416*062a843bSAndroid Build Coastguard Worker     unsigned char       data[RIL_CDMA_SMS_UDH_ANIM_NUM_BITMAPS][RIL_CDMA_SMS_UDH_SMALL_BITMAP_SIZE];
417*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhSmallAnim;
418*062a843bSAndroid Build Coastguard Worker 
419*062a843bSAndroid Build Coastguard Worker /* User Prompt Indicator UDH
420*062a843bSAndroid Build Coastguard Worker */
421*062a843bSAndroid Build Coastguard Worker typedef struct {
422*062a843bSAndroid Build Coastguard Worker     unsigned char       number_of_objects;
423*062a843bSAndroid Build Coastguard Worker     /* Number of objects of the same kind that follow this header which will
424*062a843bSAndroid Build Coastguard Worker     ** be stitched together by the applications. For example, 5 small pictures
425*062a843bSAndroid Build Coastguard Worker     ** are to be stitched together horizontally, or 6 iMelody tones are to be
426*062a843bSAndroid Build Coastguard Worker     ** connected together with intermediate iMelody header and footer ignored.
427*062a843bSAndroid Build Coastguard Worker     ** Allowed objects to be stitched:
428*062a843bSAndroid Build Coastguard Worker     **   - Images (small, large, variable)
429*062a843bSAndroid Build Coastguard Worker     **   - User defined sounds
430*062a843bSAndroid Build Coastguard Worker     */
431*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhUserPrompt;
432*062a843bSAndroid Build Coastguard Worker 
433*062a843bSAndroid Build Coastguard Worker typedef struct {
434*062a843bSAndroid Build Coastguard Worker     unsigned char         length;
435*062a843bSAndroid Build Coastguard Worker 
436*062a843bSAndroid Build Coastguard Worker     unsigned char         data[RIL_CDMA_SMS_UDH_EO_DATA_SEGMENT_MAX];
437*062a843bSAndroid Build Coastguard Worker     /* RIL_CDMA_SMS_UDH_EO_VCARD: See http://www.imc.org/pdi/vcard-21.doc for payload */
438*062a843bSAndroid Build Coastguard Worker     /* RIL_CDMA_SMS_UDH_EO_VCALENDAR: See http://www.imc.org/pdi/vcal-10.doc */
439*062a843bSAndroid Build Coastguard Worker     /* Or: Unsupported/proprietary extended objects */
440*062a843bSAndroid Build Coastguard Worker 
441*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhEoContent;
442*062a843bSAndroid Build Coastguard Worker 
443*062a843bSAndroid Build Coastguard Worker /* Extended Object UDH
444*062a843bSAndroid Build Coastguard Worker */
445*062a843bSAndroid Build Coastguard Worker /* Extended Object IDs/types
446*062a843bSAndroid Build Coastguard Worker */
447*062a843bSAndroid Build Coastguard Worker typedef enum {
448*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_EO_VCARD                   = 0x09,
449*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_EO_VCALENDAR               = 0x0A,
450*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UDH_EO_MAX32 = 0x10000000   /* Force constant ENUM size in structures */
451*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhEoId;
452*062a843bSAndroid Build Coastguard Worker 
453*062a843bSAndroid Build Coastguard Worker typedef struct {
454*062a843bSAndroid Build Coastguard Worker     /* Extended objects are to be used together with 16-bit concatenation
455*062a843bSAndroid Build Coastguard Worker     ** UDH. The max number of segments supported for E.O. is 8 at least.
456*062a843bSAndroid Build Coastguard Worker     */
457*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhEoContent    content;
458*062a843bSAndroid Build Coastguard Worker 
459*062a843bSAndroid Build Coastguard Worker     unsigned char                                 first_segment;
460*062a843bSAndroid Build Coastguard Worker     /* The following fields are only present in the first segment of a
461*062a843bSAndroid Build Coastguard Worker     ** concatenated SMS message.
462*062a843bSAndroid Build Coastguard Worker     */
463*062a843bSAndroid Build Coastguard Worker    unsigned char                                   reference;
464*062a843bSAndroid Build Coastguard Worker     /* Identify those extended object segments which should be linked together
465*062a843bSAndroid Build Coastguard Worker     */
466*062a843bSAndroid Build Coastguard Worker    unsigned short                                  length;
467*062a843bSAndroid Build Coastguard Worker     /* Length of the whole extended object data
468*062a843bSAndroid Build Coastguard Worker     */
469*062a843bSAndroid Build Coastguard Worker     unsigned char                                   control;
470*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhEoId                    type;
471*062a843bSAndroid Build Coastguard Worker     unsigned short                                  position;
472*062a843bSAndroid Build Coastguard Worker     /* Absolute position of the E.O. in the whole text after concatenation,
473*062a843bSAndroid Build Coastguard Worker     ** starting from 1.
474*062a843bSAndroid Build Coastguard Worker     */
475*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhEo;
476*062a843bSAndroid Build Coastguard Worker 
477*062a843bSAndroid Build Coastguard Worker typedef struct {
478*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhId  header_id;
479*062a843bSAndroid Build Coastguard Worker     unsigned char               header_length;
480*062a843bSAndroid Build Coastguard Worker     unsigned char              data[RIL_CDMA_SMS_UDH_OTHER_SIZE];
481*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhOther;
482*062a843bSAndroid Build Coastguard Worker 
483*062a843bSAndroid Build Coastguard Worker typedef struct {
484*062a843bSAndroid Build Coastguard Worker     unsigned char        header_length;
485*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UdhRfc822;
486*062a843bSAndroid Build Coastguard Worker 
487*062a843bSAndroid Build Coastguard Worker typedef struct {
488*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UdhId                header_id;
489*062a843bSAndroid Build Coastguard Worker 
490*062a843bSAndroid Build Coastguard Worker     union {
491*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhConcat8             concat_8;       // 00
492*062a843bSAndroid Build Coastguard Worker 
493*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhSpecialSM           special_sm;     // 01
494*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhWap8                wap_8;          // 04
495*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhWap16               wap_16;         // 05
496*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhConcat16            concat_16;      // 08
497*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhTextFormating       text_formating; // 0a
498*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhPreDefSound         pre_def_sound;  // 0b
499*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhUserDefSound        user_def_sound; // 0c
500*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhPreDefAnim          pre_def_anim;   // 0d
501*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhLargeAnim           large_anim;     // 0e
502*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhSmallAnim           small_anim;     // 0f
503*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhLargePictureData    large_picture;  // 10
504*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhSmallPictureData    small_picture;  // 11
505*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhVarPicture          var_picture;    // 12
506*062a843bSAndroid Build Coastguard Worker 
507*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhUserPrompt          user_prompt;    // 13
508*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhEo                  eo;             // 14
509*062a843bSAndroid Build Coastguard Worker 
510*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhRfc822              rfc822;         // 20
511*062a843bSAndroid Build Coastguard Worker         RIL_CDMA_SMS_UdhOther               other;
512*062a843bSAndroid Build Coastguard Worker 
513*062a843bSAndroid Build Coastguard Worker     }u;
514*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Udh;
515*062a843bSAndroid Build Coastguard Worker 
516*062a843bSAndroid Build Coastguard Worker /* ----------------------------- */
517*062a843bSAndroid Build Coastguard Worker /* -- User data encoding type -- */
518*062a843bSAndroid Build Coastguard Worker /* ----------------------------- */
519*062a843bSAndroid Build Coastguard Worker typedef enum {
520*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_OCTET        = 0,    /* 8-bit */
521*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_IS91EP,              /* varies */
522*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_ASCII,               /* 7-bit */
523*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_IA5,                 /* 7-bit */
524*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_UNICODE,             /* 16-bit */
525*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_SHIFT_JIS,           /* 8 or 16-bit */
526*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_KOREAN,              /* 8 or 16-bit */
527*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_LATIN_HEBREW,        /* 8-bit */
528*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_LATIN,               /* 8-bit */
529*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_GSM_7_BIT_DEFAULT,   /* 7-bit */
530*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ENCODING_MAX32        = 0x10000000
531*062a843bSAndroid Build Coastguard Worker 
532*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_UserDataEncoding;
533*062a843bSAndroid Build Coastguard Worker 
534*062a843bSAndroid Build Coastguard Worker /* ------------------------ */
535*062a843bSAndroid Build Coastguard Worker /* -- IS-91 EP data type -- */
536*062a843bSAndroid Build Coastguard Worker /* ------------------------ */
537*062a843bSAndroid Build Coastguard Worker typedef enum {
538*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EP_VOICE_MAIL         = 0x82,
539*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EP_SHORT_MESSAGE_FULL = 0x83,
540*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EP_CLI_ORDER          = 0x84,
541*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EP_SHORT_MESSAGE      = 0x85,
542*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EP_MAX32              = 0x10000000
543*062a843bSAndroid Build Coastguard Worker 
544*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_IS91EPType;
545*062a843bSAndroid Build Coastguard Worker 
546*062a843bSAndroid Build Coastguard Worker typedef struct {
547*062a843bSAndroid Build Coastguard Worker     /* NOTE: If message_id.udh_present == TRUE:
548*062a843bSAndroid Build Coastguard Worker     **       'num_headers' is the number of User Data Headers (UDHs),
549*062a843bSAndroid Build Coastguard Worker     **       and 'headers' include all those headers.
550*062a843bSAndroid Build Coastguard Worker     */
551*062a843bSAndroid Build Coastguard Worker     unsigned char                              num_headers;
552*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Udh                     headers[RIL_CDMA_SMS_MAX_UD_HEADERS];
553*062a843bSAndroid Build Coastguard Worker 
554*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UserDataEncoding      encoding;
555*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IS91EPType             is91ep_type;
556*062a843bSAndroid Build Coastguard Worker 
557*062a843bSAndroid Build Coastguard Worker     /*----------------------------------------------------------------------
558*062a843bSAndroid Build Coastguard Worker      'data_len' indicates the valid number of bytes in the 'data' array.
559*062a843bSAndroid Build Coastguard Worker 
560*062a843bSAndroid Build Coastguard Worker      'padding_bits' (0-7) indicates how many bits in the last byte of 'data'
561*062a843bSAndroid Build Coastguard Worker      are invalid bits. This parameter is only used for Mobile-Originated
562*062a843bSAndroid Build Coastguard Worker      messages. There is no way for the API to tell how many padding bits
563*062a843bSAndroid Build Coastguard Worker      exist in the received message. Instead, the application can find out how
564*062a843bSAndroid Build Coastguard Worker      many padding bits exist in the user data when decoding the user data.
565*062a843bSAndroid Build Coastguard Worker 
566*062a843bSAndroid Build Coastguard Worker      'data' has the raw bits of the user data field of the SMS message.
567*062a843bSAndroid Build Coastguard Worker      The client software should decode the raw user data according to its
568*062a843bSAndroid Build Coastguard Worker      supported encoding types and languages.
569*062a843bSAndroid Build Coastguard Worker 
570*062a843bSAndroid Build Coastguard Worker      EXCEPTION 1: CMT-91 user data raw bits are first translated into BD fields
571*062a843bSAndroid Build Coastguard Worker      (e.g. num_messages, callback, etc.) The translated user data field in
572*062a843bSAndroid Build Coastguard Worker      VMN and Short Message is in the form of ASCII characters, each occupying
573*062a843bSAndroid Build Coastguard Worker      a byte in the resulted 'data'.
574*062a843bSAndroid Build Coastguard Worker 
575*062a843bSAndroid Build Coastguard Worker      EXCEPTION 2: GSM 7-bit Default characters are decoded so that each byte
576*062a843bSAndroid Build Coastguard Worker      has one 7-bit GSM character.
577*062a843bSAndroid Build Coastguard Worker 
578*062a843bSAndroid Build Coastguard Worker      'number_of_digits' is the number of digits/characters (7, 8, 16, or
579*062a843bSAndroid Build Coastguard Worker      whatever bits) in the raw user data, which can be used by the client
580*062a843bSAndroid Build Coastguard Worker      when decoding the user data according to the encoding type and language.
581*062a843bSAndroid Build Coastguard Worker     -------------------------------------------------------------------------*/
582*062a843bSAndroid Build Coastguard Worker     unsigned char                                data_len;
583*062a843bSAndroid Build Coastguard Worker     unsigned char                                padding_bits;
584*062a843bSAndroid Build Coastguard Worker     unsigned char                                data[ RIL_CDMA_SMS_USER_DATA_MAX ];
585*062a843bSAndroid Build Coastguard Worker     unsigned char                                number_of_digits;
586*062a843bSAndroid Build Coastguard Worker 
587*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_CdmaUserData;
588*062a843bSAndroid Build Coastguard Worker 
589*062a843bSAndroid Build Coastguard Worker /* -------------------- */
590*062a843bSAndroid Build Coastguard Worker /* ---- Message Id ---- */
591*062a843bSAndroid Build Coastguard Worker /* -------------------- */
592*062a843bSAndroid Build Coastguard Worker typedef enum {
593*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_RESERVED_0     = 0,
594*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_DELIVER,       /* MT only */
595*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_SUBMIT,        /* MO only */
596*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_CANCELLATION,  /* MO only */
597*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_DELIVERY_ACK,  /* MT only */
598*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_USER_ACK,      /* MT & MO */
599*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_READ_ACK,      /* MT & MO */
600*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BD_TYPE_MAX32          = 0x10000000
601*062a843bSAndroid Build Coastguard Worker 
602*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_BdMessageType;
603*062a843bSAndroid Build Coastguard Worker 
604*062a843bSAndroid Build Coastguard Worker typedef unsigned int  RIL_CDMA_SMS_MessageNumber;
605*062a843bSAndroid Build Coastguard Worker 
606*062a843bSAndroid Build Coastguard Worker typedef struct {
607*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_BdMessageType   type;
608*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_MessageNumber      id_number;
609*062a843bSAndroid Build Coastguard Worker     unsigned char                      udh_present;
610*062a843bSAndroid Build Coastguard Worker     /* NOTE: if FEATURE_SMS_UDH is not defined,
611*062a843bSAndroid Build Coastguard Worker     ** udh_present should be ignored.
612*062a843bSAndroid Build Coastguard Worker     */
613*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_MessageId;
614*062a843bSAndroid Build Coastguard Worker 
615*062a843bSAndroid Build Coastguard Worker typedef unsigned char           RIL_CDMA_SMS_UserResponse;
616*062a843bSAndroid Build Coastguard Worker 
617*062a843bSAndroid Build Coastguard Worker /* ------------------- */
618*062a843bSAndroid Build Coastguard Worker /* ---- Timestamp ---- */
619*062a843bSAndroid Build Coastguard Worker /* ------------------- */
620*062a843bSAndroid Build Coastguard Worker typedef struct {
621*062a843bSAndroid Build Coastguard Worker     /* If 'year' is between 96 and 99, the actual year is 1900 + 'year';
622*062a843bSAndroid Build Coastguard Worker        if 'year' is between 00 and 95, the actual year is 2000 + 'year'.
623*062a843bSAndroid Build Coastguard Worker        NOTE: Each field has two BCD digits and byte arrangement is <MSB, ... ,LSB>
624*062a843bSAndroid Build Coastguard Worker     */
625*062a843bSAndroid Build Coastguard Worker     unsigned char      year;        /* 0x00-0x99 */
626*062a843bSAndroid Build Coastguard Worker     unsigned char      month;       /* 0x01-0x12 */
627*062a843bSAndroid Build Coastguard Worker     unsigned char      day;         /* 0x01-0x31 */
628*062a843bSAndroid Build Coastguard Worker     unsigned char      hour;        /* 0x00-0x23 */
629*062a843bSAndroid Build Coastguard Worker     unsigned char      minute;      /* 0x00-0x59 */
630*062a843bSAndroid Build Coastguard Worker     unsigned char      second;      /* 0x00-0x59 */
631*062a843bSAndroid Build Coastguard Worker     signed char      timezone;    /* +/-, [-48,+48] number of 15 minutes - GW only */
632*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Timestamp;
633*062a843bSAndroid Build Coastguard Worker 
634*062a843bSAndroid Build Coastguard Worker /* ------------------ */
635*062a843bSAndroid Build Coastguard Worker /* ---- Priority ---- */
636*062a843bSAndroid Build Coastguard Worker /* ------------------ */
637*062a843bSAndroid Build Coastguard Worker typedef enum {
638*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIORITY_NORMAL      = 0,
639*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIORITY_INTERACTIVE,
640*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIORITY_URGENT,
641*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIORITY_EMERGENCY,
642*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIORITY_MAX32       = 0x10000000
643*062a843bSAndroid Build Coastguard Worker 
644*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Priority;
645*062a843bSAndroid Build Coastguard Worker 
646*062a843bSAndroid Build Coastguard Worker /* ----------------- */
647*062a843bSAndroid Build Coastguard Worker /* ---- Privacy ---- */
648*062a843bSAndroid Build Coastguard Worker /* ----------------- */
649*062a843bSAndroid Build Coastguard Worker typedef enum {
650*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIVACY_NORMAL      = 0,
651*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIVACY_RESTRICTED,
652*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIVACY_CONFIDENTIAL,
653*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIVACY_SECRET,
654*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_PRIVACY_MAX32       = 0x10000000
655*062a843bSAndroid Build Coastguard Worker 
656*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Privacy;
657*062a843bSAndroid Build Coastguard Worker 
658*062a843bSAndroid Build Coastguard Worker /* ---------------------- */
659*062a843bSAndroid Build Coastguard Worker /* ---- Reply option ---- */
660*062a843bSAndroid Build Coastguard Worker /* ---------------------- */
661*062a843bSAndroid Build Coastguard Worker typedef struct {
662*062a843bSAndroid Build Coastguard Worker     /* whether user ack is requested
663*062a843bSAndroid Build Coastguard Worker     */
664*062a843bSAndroid Build Coastguard Worker     unsigned char          user_ack_requested;
665*062a843bSAndroid Build Coastguard Worker 
666*062a843bSAndroid Build Coastguard Worker     /* whether delivery ack is requested.
667*062a843bSAndroid Build Coastguard Worker        Should be FALSE for incoming messages.
668*062a843bSAndroid Build Coastguard Worker     */
669*062a843bSAndroid Build Coastguard Worker     unsigned char          delivery_ack_requested;
670*062a843bSAndroid Build Coastguard Worker 
671*062a843bSAndroid Build Coastguard Worker     /* Message originator requests the receiving phone to send back a READ_ACK
672*062a843bSAndroid Build Coastguard Worker     ** message automatically when the user reads the received message.
673*062a843bSAndroid Build Coastguard Worker     */
674*062a843bSAndroid Build Coastguard Worker     unsigned char          read_ack_requested;
675*062a843bSAndroid Build Coastguard Worker 
676*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_ReplyOption;
677*062a843bSAndroid Build Coastguard Worker 
678*062a843bSAndroid Build Coastguard Worker typedef enum {
679*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_DEFAULT         = 0,
680*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_LOW_PRIORITY    = 1,
681*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_MEDIUM_PRIORITY = 2,
682*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_HIGH_PRIORITY   = 3,
683*062a843bSAndroid Build Coastguard Worker 
684*062a843bSAndroid Build Coastguard Worker     /* For pre-IS637A implementations, alert_mode only has values of True/False:
685*062a843bSAndroid Build Coastguard Worker     */
686*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_OFF   = 0,
687*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ALERT_MODE_ON    = 1
688*062a843bSAndroid Build Coastguard Worker 
689*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_AlertMode;
690*062a843bSAndroid Build Coastguard Worker 
691*062a843bSAndroid Build Coastguard Worker /* ------------------ */
692*062a843bSAndroid Build Coastguard Worker /* ---- Language ---- */
693*062a843bSAndroid Build Coastguard Worker /* ------------------ */
694*062a843bSAndroid Build Coastguard Worker typedef enum {
695*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_UNSPECIFIED = 0,
696*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_ENGLISH,
697*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_FRENCH,
698*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_SPANISH,
699*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_JAPANESE,
700*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_KOREAN,
701*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_CHINESE,
702*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_HEBREW,
703*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_LANGUAGE_MAX32       = 0x10000000
704*062a843bSAndroid Build Coastguard Worker 
705*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_Language;
706*062a843bSAndroid Build Coastguard Worker 
707*062a843bSAndroid Build Coastguard Worker /* ---------------------------------- */
708*062a843bSAndroid Build Coastguard Worker /* ---------- Display Mode ---------- */
709*062a843bSAndroid Build Coastguard Worker /* ---------------------------------- */
710*062a843bSAndroid Build Coastguard Worker typedef enum {
711*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DISPLAY_MODE_IMMEDIATE   = 0,
712*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DISPLAY_MODE_DEFAULT     = 1,
713*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DISPLAY_MODE_USER_INVOKE = 2,
714*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DISPLAY_MODE_RESERVED    = 3
715*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_DisplayMode;
716*062a843bSAndroid Build Coastguard Worker 
717*062a843bSAndroid Build Coastguard Worker /* IS-637B parameters/fields
718*062a843bSAndroid Build Coastguard Worker */
719*062a843bSAndroid Build Coastguard Worker 
720*062a843bSAndroid Build Coastguard Worker /* ---------------------------------- */
721*062a843bSAndroid Build Coastguard Worker /* ---------- Delivery Status ------- */
722*062a843bSAndroid Build Coastguard Worker /* ---------------------------------- */
723*062a843bSAndroid Build Coastguard Worker typedef enum {
724*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_ACCEPTED              = 0,    /* ERROR_CLASS_NONE */
725*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_DEPOSITED_TO_INTERNET = 1,    /* ERROR_CLASS_NONE */
726*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_DELIVERED             = 2,    /* ERROR_CLASS_NONE */
727*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_CANCELLED             = 3,    /* ERROR_CLASS_NONE */
728*062a843bSAndroid Build Coastguard Worker 
729*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_NETWORK_CONGESTION  = 4,    /* ERROR_CLASS_TEMP & PERM */
730*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_NETWORK_ERROR       = 5,    /* ERROR_CLASS_TEMP & PERM */
731*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_CANCEL_FAILED       = 6,    /* ERROR_CLASS_PERM */
732*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_BLOCKED_DESTINATION = 7,    /* ERROR_CLASS_PERM */
733*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_TEXT_TOO_LONG       = 8,    /* ERROR_CLASS_PERM */
734*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_DUPLICATE_MESSAGE   = 9,    /* ERROR_CLASS_PERM */
735*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_INVALID_DESTINATION = 10,   /* ERROR_CLASS_PERM */
736*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_MESSAGE_EXPIRED     = 13,   /* ERROR_CLASS_PERM */
737*062a843bSAndroid Build Coastguard Worker 
738*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DELIVERY_STATUS_UNKNOWN_ERROR       = 0x1F  /* ERROR_CLASS_PERM */
739*062a843bSAndroid Build Coastguard Worker 
740*062a843bSAndroid Build Coastguard Worker     /* All the other values are reserved */
741*062a843bSAndroid Build Coastguard Worker 
742*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_DeliveryStatusE;
743*062a843bSAndroid Build Coastguard Worker 
744*062a843bSAndroid Build Coastguard Worker typedef struct {
745*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ErrorClass       error_class;
746*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DeliveryStatusE   status;
747*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_DeliveryStatus;
748*062a843bSAndroid Build Coastguard Worker 
749*062a843bSAndroid Build Coastguard Worker typedef struct {
750*062a843bSAndroid Build Coastguard Worker     unsigned char               address[RIL_CDMA_SMS_IP_ADDRESS_SIZE];
751*062a843bSAndroid Build Coastguard Worker     unsigned char             is_valid;
752*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_IpAddress;
753*062a843bSAndroid Build Coastguard Worker 
754*062a843bSAndroid Build Coastguard Worker /* This special parameter captures any unrecognized/proprietary parameters
755*062a843bSAndroid Build Coastguard Worker */
756*062a843bSAndroid Build Coastguard Worker typedef struct {
757*062a843bSAndroid Build Coastguard Worker     unsigned char                         input_other_len;
758*062a843bSAndroid Build Coastguard Worker     unsigned char                         desired_other_len; /* used during decoding */
759*062a843bSAndroid Build Coastguard Worker     unsigned char                         * other_data;
760*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_OtherParm;
761*062a843bSAndroid Build Coastguard Worker 
762*062a843bSAndroid Build Coastguard Worker typedef struct {
763*062a843bSAndroid Build Coastguard Worker     /* the mask indicates which fields are present in this message */
764*062a843bSAndroid Build Coastguard Worker     unsigned int                        mask;
765*062a843bSAndroid Build Coastguard Worker 
766*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_MessageId         message_id;
767*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_CdmaUserData     user_data;
768*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_UserResponse        user_response;
769*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Timestamp          mc_time;
770*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Timestamp          validity_absolute;
771*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Timestamp          validity_relative;
772*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Timestamp          deferred_absolute;
773*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Timestamp          deferred_relative;
774*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Priority           priority;
775*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Privacy            privacy;
776*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_ReplyOption       reply_option;
777*062a843bSAndroid Build Coastguard Worker     unsigned char                         num_messages;  /* the actual value; not BCDs */
778*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_AlertMode         alert_mode;
779*062a843bSAndroid Build Coastguard Worker      /* For pre-IS-637A implementations, alert_mode is either Off or On. */
780*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Language           language;
781*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_Address            callback;
782*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DisplayMode       display_mode;
783*062a843bSAndroid Build Coastguard Worker 
784*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_DeliveryStatus    delivery_status;
785*062a843bSAndroid Build Coastguard Worker     unsigned int                        deposit_index;
786*062a843bSAndroid Build Coastguard Worker 
787*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_IpAddress         ip_address;
788*062a843bSAndroid Build Coastguard Worker     unsigned char                         rsn_no_notify;
789*062a843bSAndroid Build Coastguard Worker 
790*062a843bSAndroid Build Coastguard Worker     /* See function comments of wms_ts_decode() and
791*062a843bSAndroid Build Coastguard Worker     ** wms_ts_decode_cdma_bd_with_other() for details regarding 'other' parameters
792*062a843bSAndroid Build Coastguard Worker     */
793*062a843bSAndroid Build Coastguard Worker     RIL_CDMA_SMS_OtherParm         other;
794*062a843bSAndroid Build Coastguard Worker 
795*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_SMS_ClientBd;
796*062a843bSAndroid Build Coastguard Worker 
797*062a843bSAndroid Build Coastguard Worker typedef struct {
798*062a843bSAndroid Build Coastguard Worker     unsigned char length;   /* length, in bytes, of the encoded SMS message */
799*062a843bSAndroid Build Coastguard Worker     unsigned char * data;   /* the encoded SMS message (max 255 bytes) */
800*062a843bSAndroid Build Coastguard Worker } RIL_CDMA_Encoded_SMS;
801*062a843bSAndroid Build Coastguard Worker 
802*062a843bSAndroid Build Coastguard Worker #ifdef __cplusplus
803*062a843bSAndroid Build Coastguard Worker }
804*062a843bSAndroid Build Coastguard Worker #endif
805*062a843bSAndroid Build Coastguard Worker 
806*062a843bSAndroid Build Coastguard Worker #endif /*ANDROID_RIL_CDMA_SMS_H*/
807